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.
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.
There will be two email notifications: one for accounts needing attention and the other for all good accounts.
Ejemplo:
Mensajes:
Got it, your script needs two distinct email outputs:
✅ Correo electrónico "Todo bien" (si no se encuentra ningún problema ).
⚠️ 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
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.
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'); }
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.
Empiece por configurar el destino de salida.
Usted desplegará este script dentro de su cuenta MCC.
La primera vez que utilice el script, deberá autorizarlo.
Debe completar este paso o el script no se ejecutará.
Dentro del script, revisa y modifica lo siguiente:
Puedes dejar el resto del guión tal cual.
Ejecútalo una vez manualmente para asegurarte de que todo funciona.
Para que esto sea automático, configúrelo para que se ejecute de forma periódica.
El script se ejecutará automáticamente y sólo le alertará cuando algo esté apagado.
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.
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.
¿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.
"*" indica campos obligatorios
"*" indica campos obligatorios
"*" indica campos obligatorios