Saltar al contenido

Automatización · Operación y reportes

Crear un reporte semanal de Google Ads en Google Sheets

Lleva cada semana cerrada de Google Ads a Google Sheets con costo, clics, impresiones y conversiones reportadas, sin mezclar cuentas ni duplicar a ciegas.

¿Cómo llevo un reporte semanal de Google Ads a Google Sheets sin duplicar filas?

El Met trabaja con una sola cuenta y una semana calendario que ya terminó en la zona horaria de esa cuenta. Ejecuta una consulta GAQL con fechas ISO explícitas, lee moneda, zona horaria, costo en micros, impresiones, clics y las conversiones que Google Ads ya atribuyó. No llama ventas a esas conversiones ni calcula ROI. Antes de escribir, verifica el archivo, la pestaña y los encabezados, y busca una clave técnica estable formada con el alias opaco de la cuenta y el período. Muestra la fila completa y espera una aprobación nueva. Solo entonces relee la clave, agrega una fila con INSERT_ROWS y comprueba el rango devuelto. Si el append queda ambiguo, relee la hoja y no lo repite a ciegas.

Qué la pone en marcha

Cuando alguien lo pide

Arranca cuando una persona indica la cuenta y las fechas de una semana ya cerrada, o ejecuta la tarea manual guardada. No instala un cron ni promete que el reporte aparecerá solo la semana siguiente; cada período necesita una corrida y su aprobación de escritura.

Una tarea de ejecución manual: alguien del equipo la corre con un botón, o se la pide al Met por chat.

Quién la ejecuta

Met de analítica de pauta y reportes

Área de Marketing

No tiene un nombre propio sembrado. Su trabajo es trasladar una medición cerrada y trazable entre dos sistemas, conservando unidades, vacíos y alcance sin convertir datos de pauta en conclusiones comerciales que las fuentes no demuestran.

Qué hay que tener conectado

5 pasos · 5 herramientas

El procedimiento, paso a paso

Cada paso muestra la herramienta que se ejecuta. Son las del conector real: si una dejara de existir, esta página no compilaría.

  1. 1

    Elegir una cuenta y una semana cerrada

    listar_cuentas confirma los ids accesibles. La corrida elige exactamente uno y recibe week_start y week_end en YYYY-MM-DD, de lunes a domingo. Si hay varias cuentas, no las suma ni toma la primera por comodidad. También carga desde la configuración un account_key estable y opaco —por ejemplo un UUID sin nombre, correo ni customer id— para construir la clave técnica del reporte. Sin cuenta, período exacto o alias configurado, se detiene.

  2. 2

    Consultar la medición exacta en Google Ads

    consultar ejecuta una GAQL sobre customer con customer.id, customer.currency_code, customer.time_zone, metrics.cost_micros, metrics.impressions, metrics.clicks y metrics.conversions, filtrada con `segments.date BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'`, sustituyendo las dos fechas acordadas. No usa LAST_7_DAYS: ese preset puede incluir una semana abierta. Debe volver una sola cuenta, con paginacion.hay_mas en false, y week_end debe estar completamente en el pasado según customer.time_zone. Cualquier fila extra, ausencia o truncamiento detiene el flujo. El costo legible se obtiene dividiendo cost_micros exactamente por 1.000.000 y se conserva también el valor original. La moneda sale de customer.currency_code y nunca se convierte. metrics.conversions se guarda como conversions_reported tal como llega, incluso si es fraccionario por atribución; no se renombra como ventas. Si Google omite un campo, la celda queda vacía y data_notes lo registra: no se reemplaza por cero. report_key se arma de forma estable como account_key:week_start:week_end.

  3. 3

    Verificar la hoja y buscar el mismo período

    El spreadsheet_id y la pestaña Weekly Ads están configurados de antemano. sheets_metadata confirma el archivo y la pestaña; sheets_get valida en `'Weekly Ads'!A1:M1` este orden exacto: report_key, account_key, google_ads_customer_id, week_start, week_end, account_timezone, currency_code, cost_micros, cost, impressions, clicks, conversions_reported y data_notes. Luego lee `'Weekly Ads'!A2:M3500` con UNFORMATTED_VALUE y compara report_key. Son 45.487 celdas como máximo, por debajo del tope local de 50.000. Si el rango está lleno, falta un encabezado o hay más de una coincidencia, se detiene en vez de suponer que la hoja está completa.

  4. 4

    Mostrar la fila y esperar otra aprobación

    Si existe una sola fila con la misma clave y los mismos valores, informa que el período ya está registrado y no escribe. Si la clave coincide pero los valores difieren, muestra el conflicto y se detiene: esta receta no corrige historia con sheets_update. Cuando no hay coincidencia, presenta cuenta, fechas, zona horaria, moneda y las trece celdas exactas. Espera un sí explícito en un mensaje nuevo; pedir el reporte al inicio no aprueba todavía el append.

  5. 5

    Releer, agregar una vez y reconciliar el resultado

    Después de la aprobación, sheets_get vuelve a buscar report_key para cerrar la ventana entre la revisión y la escritura. Solo con cero coincidencias llama sheets_append sobre `'Weekly Ads'!A:M`, con una matriz de una fila e INSERT_ROWS. Si Google responde, sheets_get relee updatedRange y compara las trece celdas. Si hay timeout o respuesta ambigua, relee `'Weekly Ads'!A2:M3500` por la clave: una sola coincidencia con las trece celdas exactas confirma; cero, una con valores distintos o varias dejan el caso sin resolver y detienen la corrida. Nunca reenvía el append a ciegas.

Antes de empezar

Qué necesitas tener listo

Ninguno de estos puntos lo resuelve el Met. Si falta uno, la automatización se detiene ahí.

Los límites

Qué NO resuelve esta automatización

Preferimos decirlo aquí que descubrirlo en la implementación.

Preguntas frecuentes

Preguntas sobre esta automatización

Porque es una ventana móvil y puede contener días de dos semanas o un día todavía abierto. La receta usa lunes y domingo explícitos con BETWEEN y valida la zona horaria de la cuenta.

No. Son metrics.conversions según la configuración y atribución de Google Ads. Pueden incluir otras acciones y valores fraccionarios; conciliarlas con ventas requiere otra fuente.

En customer.currency_code de esa cuenta. cost_micros conserva el valor crudo y cost lo divide por un millón; esta receta no convierte a otra moneda ni suma cuentas diferentes.

No se repite. Primero se relee report_key en el rango configurado. Una coincidencia exacta confirma la escritura; cero o varias dejan el resultado ambiguo para revisión manual.

No en una sola fila ni una sola corrida. Ejecuta una vez por customer id para conservar moneda, zona horaria, período y clave de deduplicación sin mezclarlos.

Sigue por aquí

Otras automatizaciones con las mismas herramientas

¿Quieres esta automatización corriendo con tus datos?

Te la mostramos con tus cuentas conectadas, no con una demostración enlatada.