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
- Google Ads Crear y promocionar
- Google Workspace Automatizar y colaborar
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
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
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
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
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
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í.
-
Google Ads conectado y una sola cuenta elegida
Conecta la cuenta con permiso OAuth de Google Ads y configura el token de desarrollador. Elige un customer id visible para esa credencial; cada cuenta adicional se procesa en otra corrida.
-
Un alias opaco y estable para esa cuenta
Guarda en la configuración de la tarea un account_key aleatorio, como un UUID, asociado al customer id. No uses el nombre de la empresa, un correo ni otro dato personal en esa clave.
-
Una hoja compartida y preparada
Conecta Google Workspace por OAuth con permiso de Google Sheets, comparte el archivo con esa cuenta y crea la pestaña Weekly Ads con los trece encabezados en el orden documentado.
-
Las fechas ISO de una semana ya terminada
Entrega week_start y week_end de lunes a domingo en YYYY-MM-DD. La zona horaria se lee de la cuenta de Ads; si el domingo aún no terminó allí, la corrida espera y no escribe parciales.
Los límites
Qué NO resuelve esta automatización
Preferimos decirlo aquí que descubrirlo en la implementación.
-
No programa el próximo reporte ni crea un disparador recurrente. Es una tarea manual por semana cerrada; automatizar el calendario es otro flujo y requiere un trigger real.
-
No mezcla cuentas ni monedas. Una fila corresponde a un customer id, su currency_code y un período; consolidar varias cuentas exige filas separadas y reglas de conversión ajenas a esta receta.
-
No llama ventas a metrics.conversions, no configura su medición y no calcula ROI. Las conversiones son las que Google Ads ya atribuyó y pueden ser fraccionarias.
-
No convierte un campo ausente en cero ni inventa una explicación para cambios de costo, clics o conversiones. Guarda el vacío con una nota y deja la interpretación para una revisión aparte.
-
No garantiza unicidad atómica. sheets_get y sheets_append son llamadas separadas; dos corridas concurrentes todavía podrían pasar la prelectura y agregar el mismo período.
-
No corrige ni borra filas existentes. Una coincidencia con valores distintos se reporta como conflicto, y la corrida se detiene sin llamar sheets_update o sheets_clear.
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
Contenido y publicación
Crear una campaña de búsqueda completa en Google Ads
¿Cómo creo una campaña de búsqueda completa en Google Ads y la reviso antes de gastar?
Marketing
- Arranca:
- cuando alguien lo pide
- Pasos:
- 10, con 13 herramientas reales
- Necesita:
- Google Ads
Operación y reportes
Crear un dashboard interno con IA desde Google Sheets
¿Cómo creo un dashboard con IA desde los datos que ya tengo en Google Sheets?
- Arranca:
- cuando alguien lo pide
- Pasos:
- 6, con 5 herramientas reales
- Necesita:
- Google Workspace · Páginas de Meteor
Operación y reportes
Guardar el reporte semanal de pedidos de Mercado Libre en Google Sheets
¿Cómo guardo en Google Sheets un reporte semanal verificable de mis pedidos de Mercado Libre?
- Arranca:
- cuando alguien lo pide
- Pasos:
- 4, con 5 herramientas reales
- Necesita:
- Mercado Libre · Google Workspace
Operación y reportes
Reporte semanal de Search Console, con su serie histórica guardada
¿Cómo tengo cada lunes el informe de Search Console sin armarlo a mano?
- Arranca:
- a una hora fija
- Pasos:
- 6, con 12 herramientas reales
- Necesita:
- Google Workspace
¿Quieres esta automatización corriendo con tus datos?
Te la mostramos con tus cuentas conectadas, no con una demostración enlatada.