Cómo supervisar el estado de los objetivos de Google Ads en las cuentas de MCC
Cómo supervisar el estado de los objetivos de Google Ads en las cuentas de MCC

Cómo supervisar el estado de los objetivos de Google Ads en las cuentas de MCC mediante Google Sheets

¿Le gusta este artículo?
Compártelo en las redes sociales
Contenido

Este tutorial documenta un script que audita la actividad de los objetivos de conversión en todas las cuentas bajo su MCC. Escribe los resultados en una hoja de Google, etiqueta la salud de cada objetivo, codifica por colores el estado y envía un resumen por correo electrónico solo cuando hay un problema.

No hay herramientas innecesarias ni cuadros de mando de terceros, sólo control en bruto y visibilidad completa.

Supervisar el estado de los objetivos de Google Ads en todas las cuentas de MCC

Qué hace este script

Este script audita todas las cuentas de Google Ads bajo su MCC y evalúa el estado de cada objetivo de conversión durante un período de revisión retrospectiva definido. En lugar de adivinar qué objetivos están activos o rotos, este sistema le ofrece una instantánea en tiempo real en una hoja de Google y solo le avisa cuando algo requiere su atención.

  • Se conecta a su MCC y hace un bucle a través de cada cuenta vinculada
  • Skips accounts you've blocklisted (excluded)
  • Obtiene el rendimiento de la conversión a nivel de campaña durante un periodo determinado.
  • Evalúa la salud de cada objetivo de conversión
  • Registrar los resultados en una hoja de Google, aplicando colores de fondo al estado
  • Envía por correo electrónico un resumen sólo de las cuentas o los objetivos problemáticos

Notificaciones por correo electrónico

There will be two email notifications: one for accounts needing attention and the other for all good accounts.

Ejemplo:

cuentas u objetivos problemáticos
Mensajes:

Got it, your script needs two distinct email outputs:

  1. ✅ Correo electrónico "Todo bien" (si no se encuentra ningún problema ).

  2. ⚠️ Correo electrónico "Necesita atención" (si algún objetivo está inactivo, falta o es de bajo rendimiento)

He aquí exactamente cómo deberían ser ambas versiones, utilizando sus datos de muestra y la lógica actual:

Mensaje nº 1

Todos los objetivos de conversión supervisados informan de la actividad de los últimos 60 días.

No se han encontrado problemas en ninguna cuenta.

Ver el informe completo:
https://docs.google.com/spreadsheets/d/yoursheetid

Mensaje nº 2

Es posible que haya que revisar los siguientes objetivos de conversión (por ejemplo, que no haya conversiones recientes o que estén inactivos):

Bright Widgets Inc (123-456-789) - Envío de formulario de contacto (Necesita atención)
Acme Corp (987-654-321) - Programar llamada (Inactivo)
Acme Corp (987-654-321) - Suscripción a prueba gratuita (Necesita atención)
Rocket Leads (456-789-123) - (configurado, sin actividad) (Sin conversiones recientes)
Beta Test Group (321-654-987) - (no configurado) (Inactivo)
Zebra Analytics (999-111-222) - Descarga de libro blanco (Necesita atención)

Ver el informe completo:
https://docs.google.com/spreadsheets/d/yoursheetid

Requisitos

Antes de desplegar el script, asegúrese de que su entorno está configurado correctamente. Este script está diseñado para ejecutarse dentro de un contexto de Google Ads MCC para escribir datos y enviar alertas.

  • Cuenta de Google Ads MCC
  • Hoja de cálculo de Google (debe crearse manualmente)

El guión original

Este es el script en su forma completa, sin editar. Todos los comentarios, el formato y la lógica son exactamente como se escribieron originalmente. No modifique esto si planea seguir el desglose más adelante en este tutorial.

// ========== CONFIGURATION ==========

const SHEET_ID = '1PvpW3eUl5fqRwabBg0P7D8LKzW83MOTVX1KDBMB3ipA';

const LOOKBACK_DAYS = 60;

const EXCLUDED_ACCOUNT_IDS = [

'000-000-000', '000-000-000', '000-000-000'

];

const RECIPIENT_EMAILS = '[email protected]';

// ===================================

function main() {

const sheet = SpreadsheetApp.openById(SHEET_ID).getSheets()[0];

sheet.clear();

sheet.appendRow(['Account Name', 'Account ID', 'Goal Name', 'Conversions', 'Status', 'Date Range']);

const startDate = getDateXDaysAgo(LOOKBACK_DAYS);

const endDate = getTodayDate();

const dateRangeLabel = `Last ${LOOKBACK_DAYS} days (${startDate} to ${endDate})`;

const accounts = MccApp.accounts().get();

const flagged = [];

let rowIndex = 2;

while (accounts.hasNext()) {

const account = accounts.next();

const accountId = account.getCustomerId();

const accountName = account.getName();

Logger.log(`⏳ Checking account: ${accountName} (${accountId})`);

if (EXCLUDED_ACCOUNT_IDS.includes(accountId)) {

Logger.log(`🚫 Skipping excluded account: ${accountName} (${accountId})`);

continue;

}

try {

MccApp.select(account);

const query = `

SELECT ConversionTypeName, Conversions

FROM CAMPAIGN_PERFORMANCE_REPORT

DURING ${startDate},${endDate}

`;

const report = AdsApp.report(query);

const rows = report.rows();

const goalMap = {};

while (rows.hasNext()) {

const row = rows.next();

const goalName = row['ConversionTypeName'] || '(not set)';

const conversions = parseFloat(row['Conversions']) || 0;

if (!goalMap[goalName]) {

goalMap[goalName] = 0;

}

goalMap[goalName] += conversions;

}

if (Object.keys(goalMap).length === 0) {

Logger.log(`⚠️ No conversion data returned for account: ${accountName} (${accountId})`);

const status = 'No Recent Conversions';

sheet.appendRow([

accountName,

accountId,

'(configured, no activity)',

0,

status,

dateRangeLabel

]);

setStatusColumnColor(sheet, rowIndex, status);

flagged.push(`${accountName} (${accountId}) - no conversion goals triggered`);

rowIndex++;

continue;

}

for (const [goalName, totalConversions] of Object.entries(goalMap)) {

let status;

if (totalConversions > 0) {

status = 'Active';

} else if (goalName.toLowerCase().includes('test') || goalName === '(not set)') {

status = 'Inactive';

} else {

status = 'Needs Attention';

}

sheet.appendRow([

accountName,

accountId,

goalName,

totalConversions,

status,

dateRangeLabel

]);

setStatusColumnColor(sheet, rowIndex, status);

if (status !== 'Active') {

flagged.push(`${accountName} (${accountId}) - ${goalName} (${status})`);

}

rowIndex++;

}

} catch (e) {

Logger.log(`❌ Error processing account: ${accountName} (${accountId}) - ${e.message}`);

}

}

if (flagged.length > 0) {

const subject = '⚠️ Conversion Goals Needing Attention';

const body = `The following conversion goals may need review (e.g., no recent conversions or inactive):\n\n`

+ flagged.join('\n')

+ `\n\nView the full report:\nhttps://docs.google.com/spreadsheets/d/${SHEET_ID}`;

MailApp.sendEmail(RECIPIENT_EMAILS, subject, body);

} else {

Logger.log('✅ All goals are reporting conversions.');

}

}

// 🎨 Apply color to only the "Status" column (Column E)

function setStatusColumnColor(sheet, row, status) {

const range = sheet.getRange(row, 5); // Column E

switch (status) {

case 'Active':

range.setBackground('#d9ead3'); // Light green

break;

case 'Inactive':

range.setBackground('#f4cccc'); // Light red

break;

case 'Needs Attention':

range.setBackground('#fff2cc'); // Light yellow

break;

case 'No Recent Conversions':

range.setBackground('#e6e6fa'); // Light purple

break;

default:

range.setBackground(null);

}

}

// 🕒 Helpers

function getTodayDate() {

const date = new Date();

return Utilities.formatDate(date, AdsApp.currentAccount().getTimeZone(), 'yyyyMMdd');

}

function getDateXDaysAgo(days) {

const date = new Date();

date.setDate(date.getDate() - days);

return Utilities.formatDate(date, AdsApp.currentAccount().getTimeZone(), 'yyyyMMdd');

}

Desglose de guiones por secciones

CONFIGURACIÓN

  • SHEET_ID: Destino de Google Sheets para todos los resultados
  • LOOKBACK_DAYS: Ventana de información en días
  • EXCLUDED_ACCOUNT_IDS: Cuentas de clientes a omitir
  • RECIPIENT_EMAILS: A quién se envía un correo electrónico cuando hay un problema.

Función main()

  • Abre la hoja, la limpia y configura las cabeceras
  • Calcula el intervalo de fechas
  • Recorre todas las subcuentas de MCC
  • Skips any that are blocklisted
  • Utiliza CAMPAIGN_PERFORMANCE_REPORT para extraer todos los datos de los objetivos.
  • Para cada objetivo:
    • Conversiones totales agregadas
    • Asigna un estado:
      • Activo: conversiones > 0
      • Inactivo: objetivo de la prueba o no fijado
      • Necesita atención: cero conversiones, no es una prueba
      • No hay conversiones recientes: no se devuelven datos de objetivos
  • Añade datos a la hoja
  • Llama a setStatusColumnColor() para marcar cada fila
  • Elabora una lista de problemas y envía un correo electrónico si se detecta alguno.

setStatusColumnColor(hoja, fila, estado)

  • Aplica un color de fondo a la columna E en función del estado del objetivo:
    • Verde para activo
    • Rojo para inactivo
    • Amarillo: necesita atención
    • Violeta para ninguna actividad

Ayudantes de citas

  • getTodayDate() devuelve la fecha de hoy en la zona horaria correcta
  • getDateXDaysAgo() devuelve la fecha de hace X días

This walkthrough shows how to set up the conversion goal health checker for your Google Ads MCC account. Follow each step to get the system running, write to Google Sheets, and send alerts when something breaks.

Paso 1: Crear la hoja de Google

Empiece por configurar el destino de salida.

  1. Ir a Google Sheets
  2. Haz clic en "En blanco" para crear una nueva hoja de cálculo
  3. Please give it a name like Goal Monitor
  4. La parte del medio es tu ID de hoja
  5. Pega el ID en tu script donde dice const SHEET_ID = '...'

Paso 2: Abrir el panel de scripts de Google Ads

Usted desplegará este script dentro de su cuenta MCC.

  1. Acceda a su cuenta de Google Ads MCC
  2. Haga clic en "Herramientas y configuración" en la barra de navegación superior.
  3. Under "Bulk Actions," select "Scripts."
  4. Haga clic en el botón más (+) para añadir un nuevo script
  5. Pegue todo el script exactamente como está escrito en el editor de código

Paso 3: Autorizar el script

La primera vez que utilice el script, deberá autorizarlo.

  1. Haga clic en "Autorizar" en la parte superior derecha
  2. Selecciona tu cuenta de Google
  3. Aprobar todos los permisos solicitados

Debe completar este paso o el script no se ejecutará.

Paso 4: Establezca la configuración de su script

Dentro del script, revisa y modifica lo siguiente:

  • SHEET_ID: Pegue el ID de la hoja que ha copiado.
  • LOOKBACK_DAYS: Cambiar si es necesario (por defecto es 60)
  • EXCLUSION_ACCOUNT_IDS: Añada las cuentas que no desee escanear
  • CORREOS_DEL_RECEPTOR: Añade el email o emails para recibir los informes de alertas

Puedes dejar el resto del guión tal cual.

Paso 5: Realice una prueba manual

Ejecútalo una vez manualmente para asegurarte de que todo funciona.

  1. Haga clic en "Ejecutar" en la parte superior de la navegación.
  2. Espere hasta que finalice la ejecución.
  3. Abra la hoja de Google conectada.
  4. Compruébalo:
    • Se han creado cabeceras
    • Los datos se escribieron para cada cuenta activa.
    • Los estados y colores se aplican correctamente en la columna E.

Paso 6: Programar el guión (opcional)

Para que esto sea automático, configúrelo para que se ejecute de forma periódica.

  1. En el editor de scripts, haga clic en "Crear programación".
  2. Elija una frecuencia (se recomienda diaria)
  3. Ajuste la hora de ejecución (lo ideal es por la mañana temprano)
  4. Guardar y cerrar

El script se ejecutará automáticamente y sólo le alertará cuando algo esté apagado.

Paso 7: Revisar las alertas

Cuando el script se ejecuta, comprueba todos los objetivos de conversión. Si alguno está inactivo o no se dispara, recibe un correo electrónico.

Resumen

Este script no es sólo un volcado de datos. Es un perro guardián para cada objetivo de conversión en todo su Google Ads MCC. Recibe alertas cuando algo se rompe, se estanca o deja de rastrearse. Cuando todo va bien, se hace el silencio.

Comprueba todas las cuentas que gestionas, marca los objetivos inactivos o de bajo rendimiento y envía un informe filtrado y sin ruido directamente a tu bandeja de entrada. Google Sheet te ofrece una vista en directo del estado de los objetivos por cuenta, nombre del objetivo y volumen de conversión, con indicaciones visuales integradas.

No estás rebuscando entre interfaces. No esperas a final de mes para darte cuenta de que has estado a ciegas. Usted tiene el control antes de que se convierta en un problema.

Echa un vistazo a entradas similares:

Echa un vistazo a entradas similares:

If you manage multiple accounts, don’t miss our guide on tracking GA4 issues from numerous properties or exporting top-performing actual search terms with a lightweight script to refine your targeting.

Póngase en contacto con nosotros

¿Cansado de adivinar si su seguimiento funciona? ¿Quiere un equipo que cree sistemas en lugar de meros informes?

Bright Vessel doesn’t just manage Google Ads; we engineer performance visibility at scale. Whether you need help deploying this script, integrating it into a larger automation stack, or building a custom analytics layer that tells you something, we’re ready.

Hable con el equipo que construye lo que otras agencias falsifican.

Contactar con Bright Vessel

Obtenga su auditoría SEO gratuita

Formulario gratuito de auditoría SEO

"*" indica campos obligatorios

Este campo tiene fines de validación y no debe modificarse.
Contenido
¿Le gusta este artículo?
Compártelo en las redes sociales
Obtenga su auditoría SEO gratuita

Formulario gratuito de auditoría SEO

"*" indica campos obligatorios

Este campo tiene fines de validación y no debe modificarse.
Obtenga su auditoría SEO gratuita

Formulario gratuito de auditoría SEO

"*" indica campos obligatorios

Este campo tiene fines de validación y no debe modificarse.
¿Le ha gustado este artículo?
Compártelo en las redes sociales

¡Echa un vistazo a otra entrada del blog!

Volver a todas las entradas del blog
2024 Bright Vessel. Todos los derechos reservados.
cruzmenúchevron-downflecha-izquierda