Come monitorare lo stato degli obiettivi di Google Ads negli account MCC
Come monitorare lo stato degli obiettivi di Google Ads negli account MCC

Come monitorare lo stato degli obiettivi di Google Ads negli account MCC utilizzando Fogli Google

Ti è piaciuto questo articolo?
Share it on social media!
Contenuto

Questa esercitazione documenta uno script che controlla l'attività dell'obiettivo di conversione in tutti gli account del Centro clienti. Scrive i risultati su un foglio Google, codifica lo stato di salute di ogni obiettivo, codifica a colori lo stato e invia un riepilogo via e-mail solo quando c'è un problema.

Non ci sono strumenti inutili o dashboard di terze parti, solo un controllo grezzo e una visibilità completa.

Monitorare lo stato dell'obiettivo di Google Ads negli account Centro clienti

Funzioni di questo script

This script audits every Google Ads account under your MCC and evaluates the status of each conversion goal over a defined lookback period. Instead of guessing which goals are active or broken, this system gives you a real-time snapshot in a Google Sheet and only alerts you when something needs your attention.

  • Si connette al Centro clienti e scorre in loop ogni account collegato
  • Ignora gli account che hai inserito nella lista bloccata (esclusi)
  • Estrae il rendimento delle conversioni a livello di campagna in un determinato periodo di lookback
  • Valuta lo stato di salute di ogni obiettivo di conversione
  • Registra i risultati in un foglio Google, applicando i colori di sfondo allo stato
  • Invia via e-mail un riepilogo solo degli account o degli obiettivi problematici

Notifiche e-mail

Ci saranno due notifiche e-mail: una per gli account che necessitano di attenzione e l'altra per tutti gli account validi.

Example:

Account o obiettivi problematici
Messages:

Got it, your script needs two distinct email outputs:

  1. ✅ “All Good” Email (if no issues are found)

  2. ⚠️ “Needs Attention” Email (if any goals are inactive, missing, or low-performing)

Here’s precisely how both versions should look, using your sample data and current logic:

Message #1

All monitored conversion goals are reporting activity over the last 60 days.

Nessun problema riscontrato in nessun account.

View the full report:
https://docs.google.com/spreadsheets/d/yoursheetid

Message #2

The following conversion goals may need review (e.g., no recent conversions or inactive):

Bright Widgets Inc (123-456-789) - Contact Form Submission (Needs Attention)
Acme Corp (987-654-321) - Schedule Call (Inactive)
Acme Corp (987-654-321) - Free Trial Signup (Needs Attention)
Rocket Leads (456-789-123) - (configured, no activity) (No Recent Conversions)
Beta Test Group (321-654-987) - (not set) (Inactive)
Zebra Analytics (999-111-222) - Whitepaper Download (Needs Attention)

View the full report:
https://docs.google.com/spreadsheets/d/yoursheetid

Requisiti

Before deploying the script, make sure your environment is configured correctly. This script is designed to run within a Google Ads MCC context to write data and send alerts.

  • Account Centro clienti di Google Ads
  • Foglio di calcolo Google (deve essere creato manualmente)

La sceneggiatura originale

Questo è lo script nella sua forma completa e non modificata. Tutti i commenti, la formattazione e la logica sono esattamente come scritti originariamente. Non modificare questa impostazione se si prevede di seguire la suddivisione più avanti in questa esercitazione.

// ========== 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');

}

Suddivisione degli script per sezione

CONFIGURAZIONE

  • SHEET_ID: destinazione di Fogli Google per tutti gli output
  • LOOKBACK_DAYS: Finestra di reporting in giorni
  • EXCLUDED_ACCOUNT_IDS: Conti cliente da saltare
  • RECIPIENT_EMAILS: Chi riceve un'email quando c'è un problema

Funzione main()

  • Apre il foglio, lo cancella e imposta le intestazioni
  • Calcola l'intervallo di date
  • Passa in loop a tutti i sottoconti MCC
  • Ignora quelli che sono stati bloccati
  • Utilizza CAMPAIGN_PERFORMANCE_REPORT per estrarre tutti i dati degli obiettivi
  • For each goal:
    • Aggrega le conversioni totali
    • Assigns a status:
      • Active: conversions > 0
      • Inactive: test goal or not set
      • Richiede attenzione: zero conversioni, non un test
      • Nessuna conversione recente: non sono stati restituiti dati sull'obiettivo
  • Aggiunge dati al foglio
  • Chiama setStatusColumnColor() per contrassegnare ogni riga
  • Crea un elenco segnalato ed e-mail se viene rilevato un problema

setStatusColumnColor(foglio, riga, stato)

  • Applica un colore di sfondo alla colonna E a seconda dello stato dell'obiettivo:
    • Green for active
    • Red for inactive
    • Giallo per ha bisogno di attenzione
    • Viola per assenza di attività

Aiutanti per la data

  • getTodayDate() restituisce la data odierna nel fuso orario corretto
  • getDateXDaysAgo() restituisce la data X giorni fa

Questa procedura dettagliata mostra come impostare lo strumento di verifica dello stato dell'obiettivo di conversione per l'account Centro clienti Google Ads. Segui ogni passaggio per far funzionare il sistema, scrivi su Fogli Google e invia avvisi quando qualcosa si rompe.

Passaggio 1: crea il foglio Google

Inizia impostando la destinazione di output.

  1. Vai a Fogli Google
  2. Fai clic su "Vuoto" per creare un nuovo foglio di calcolo
  3. Per favore, dagli un nome come Goal Monitor
  4. La parte al centro è l'ID del foglio
  5. Incolla l'ID nel tuo script dove dice const SHEET_ID = '...'

Passaggio 2: apri il pannello Script di Google Ads

Distribuirai questo script all'interno del tuo account Centro clienti.

  1. Accedi al tuo account Centro clienti Google Ads
  2. Fai clic su "Strumenti e impostazioni" nella barra di navigazione in alto
  3. Nella sezione "Azioni collettive", seleziona "Script".
  4. Fare clic sul pulsante più (+) per aggiungere un nuovo script
  5. Incollare l'intero script esattamente come scritto nell'editor di codice

Passaggio 3: autorizza lo script

La prima volta che si utilizza lo script, è necessario autorizzarlo.

  1. Fai clic su "Autorizza" in alto a destra
  2. Seleziona il tuo account Google
  3. Approva tutte le autorizzazioni richieste

È necessario completare questo passaggio o lo script non verrà eseguito.

Passaggio 4: Impostare la configurazione dello script

All'interno dello script, rivedere e modificare quanto segue:

  • SHEET_ID: Incolla l'ID foglio copiato
  • LOOKBACK_DAYS: Cambia se necessario (il valore predefinito è 60)
  • EXCLUDED_ACCOUNT_IDS: aggiungi tutti gli account che non desideri scansionare
  • RECIPIENT_EMAILS: aggiungere l'e-mail o le e-mail per ricevere i rapporti di avviso

È possibile lasciare il resto dello script esattamente così com'è.

Passaggio 5: Eseguire un test manuale

Eseguilo una volta manualmente per assicurarti che tutto funzioni.

  1. Fai clic su "Esegui" nella parte superiore della navigazione.
  2. Attendere il completamento dell'esecuzione.
  3. Apri il foglio Google collegato.
  4. Check that:
    • Le intestazioni sono state create
    • Data was written for each active account.
    • Gli stati e i colori vengono applicati correttamente nella colonna E.

Passaggio 6: Pianificare lo script (facoltativo)

Per renderlo automatico, impostarlo in modo che venga eseguito in base a una pianificazione ricorrente.

  1. Dall'editor di script, fai clic su "Crea pianificazione".
  2. Scegli una frequenza (si consiglia una frequenza giornaliera)
  3. Imposta il tempo di esecuzione (la mattina presto è l'ideale)
  4. Salva e chiudi

Lo script verrà eseguito automaticamente e ti avviserà solo quando qualcosa non va.

Passaggio 7: Esaminare gli avvisi

When the script runs, it checks all conversion goals. If any are inactive or not firing, you receive an email.

Riepilogo

Questo script non è solo un dump di dati. È un controllo per ogni obiettivo di conversione nell'intero Centro clienti Google Ads. Ricevi un avviso quando qualcosa si rompe, si blocca o interrompe silenziosamente il tracciamento. Quando tutto va bene, c'è silenzio.

It checks every account you manage, flags inactive or underperforming goals, and delivers a filtered, no-noise report straight to your inbox. The Google Sheet gives you a live view of goal status by account, goal name, and conversion volume, with visual cues baked in.

You’re not digging through interfaces. You’re not waiting until the end of the month to realize you’ve been blind. You’re in control before it becomes a problem.

Check out similar posts:

Check out similar posts:

If gestisci più account, non perderti la nostra guida su monitoraggio dei problemi di GA4 da numerose proprietà o esportatore Termini di ricerca effettivi più performanti con uno script leggero to refine your targeting.

Contattaci

Stanco di indovinare se il tuo tracciamento funziona? Vuoi un team che crei sistemi invece di semplici report?

Bright Vessel non si limita a gestire Google Ads; Progettiamo la visibilità delle prestazioni su larga scala. Che tu abbia bisogno di aiuto per implementare questo script, integrarlo in uno stack di automazione più ampio o creare un livello di analisi personalizzato che ti dica qualcosa, siamo pronti.

Talk to the team that builds what other agencies fake.

Contatta Bright Vessel

Ottieni il tuo audit SEO gratuito

Modulo di verifica SEO gratuito

"*" indicates required fields

Questo campo serve per la convalida e non dovrebbe essere modificato.
Contenuto
Ti è piaciuto questo articolo?
Share it on social media!
Ottieni il tuo audit SEO gratuito

Modulo di verifica SEO gratuito

"*" indicates required fields

Questo campo serve per la convalida e non dovrebbe essere modificato.
Ottieni il tuo audit SEO gratuito

Modulo di verifica SEO gratuito

"*" indicates required fields

Questo campo serve per la convalida e non dovrebbe essere modificato.
Ti è piaciuto questo articolo?
Share it on social media!

Dai un'occhiata a un altro post del blog!

Torna a tutti i post del blog
© 2024 Bright Vessel. Tutti i diritti riservati.
chevron-downfreccia sinistra