Questo tutorial documenta uno script che verifica l'attività degli obiettivi di conversione su tutti gli account del vostro MCC. Scrive i risultati in un foglio di Google, assegna un'etichetta allo stato di salute di ciascun obiettivo, ne codifica lo stato con un colore e invia un riepilogo via e-mail solo in caso di problemi.
Non ci sono strumenti inutili o dashboard di terze parti, ma solo un controllo grezzo e una visibilità completa.
Questo script controlla ogni account Google Ads sotto il vostro MCC e valuta lo stato di ogni obiettivo di conversione in un periodo di tempo definito. Invece di indovinare quali obiettivi sono attivi o non funzionanti, questo sistema vi fornisce un'istantanea in tempo reale in un foglio di Google e vi avvisa solo quando qualcosa richiede la vostra attenzione.
There will be two email notifications: one for accounts needing attention and the other for all good accounts.
Esempio:
Messaggi:
Got it, your script needs two distinct email outputs:
E-mail "Tutto bene" (se non vengono riscontrati problemi )
⚠️ Email "Needs Attention" (se qualche obiettivo è inattivo, mancante o a basso rendimento)
Ecco come dovrebbero apparire entrambe le versioni, utilizzando i dati di esempio e la logica attuale:
Messaggio n. 1
Tutti gli obiettivi di conversione monitorati riportano l'attività degli ultimi 60 giorni.
Non sono stati riscontrati problemi in nessun conto.
Visualizza il rapporto completo:
https://docs.google.com/spreadsheets/d/yoursheetid
Messaggio n. 2
I seguenti obiettivi di conversione potrebbero richiedere una revisione (ad esempio, nessuna conversione recente o inattiva):
Bright Widgets Inc (123-456-789) - Invio del modulo di contatto (richiede attenzione)
Acme Corp (987-654-321) - Pianificazione della chiamata (Inattivo)
Acme Corp (987-654-321) - Registrazione di prova gratuita (Richiede attenzione)
Rocket Leads (456-789-123) - (configurato, nessuna attività) (Nessuna conversione recente)
Beta Test Group (321-654-987) - (non impostato) (Inattivo)
Zebra Analytics (999-111-222) - Download del libro bianco (Richiede attenzione)
Visualizza il rapporto completo:
https://docs.google.com/spreadsheets/d/yoursheetid
Prima di distribuire lo script, accertarsi che l'ambiente sia configurato correttamente. Questo script è stato progettato per essere eseguito in un contesto MCC di Google Ads per scrivere dati e inviare avvisi.
Questo è lo script nella sua forma completa e non modificata. Tutti i commenti, la formattazione e la logica sono esattamente come sono stati scritti in origine. Non modificatelo se intendete seguire la suddivisione più avanti in questo 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.
Iniziare impostando la destinazione di uscita.
Questo script verrà distribuito all'interno del vostro account MCC.
La prima volta che si utilizza lo script, è necessario autorizzarlo.
È necessario completare questo passaggio, altrimenti lo script non verrà eseguito.
All'interno dello script, rivedete e modificate quanto segue:
Il resto dello script può essere lasciato esattamente com'è.
Eseguitelo una volta manualmente per assicurarvi che tutto funzioni.
Per rendere questa operazione automatica, impostatela su un programma ricorrente.
Lo script verrà eseguito automaticamente e vi avviserà solo quando qualcosa non funziona.
Quando lo script viene eseguito, controlla tutti gli obiettivi di conversione. Se uno di essi è inattivo o non funziona, si riceve un'e-mail.
Questo script non è un semplice scarico di dati. È un cane da guardia per ogni obiettivo di conversione nell'intera MCC di Google Ads. Viene avvisato quando qualcosa si rompe, si blocca o smette di essere tracciato. Quando tutto va bene, si ottiene il silenzio.
Controlla tutti gli account che gestite, segnala gli obiettivi inattivi o con prestazioni insufficienti e fornisce un rapporto filtrato e privo di rumore direttamente nella vostra casella di posta elettronica. Il foglio di Google fornisce una visione in tempo reale dello stato degli obiettivi in base all'account, al nome dell'obiettivo e al volume di conversione, con indicazioni visive incorporate.
Non si scava nelle interfacce. Non si aspetta la fine del mese per rendersi conto di essere stati ciechi. Avete il controllo prima che diventi un problema.
Guarda i post simili:
Guarda i post simili:
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.
Siete stanchi di indovinare se il vostro monitoraggio funziona? Volete un team che costruisca sistemi invece di semplici rapporti?
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.
Parlate con il team che costruisce ciò che le altre agenzie falsificano.
"*" indica i campi obbligatori
"*" indica i campi obbligatori
"*" indica i campi obbligatori