Come monitorare lo stato degli obiettivi di Google Ads tra gli account MCC
Come monitorare lo stato degli obiettivi di Google Ads tra gli account MCC

Come monitorare lo stato degli obiettivi di Google Ads tra gli account MCC utilizzando i fogli di Google

Vi piace questo articolo?
Condividetelo sui social media!
Contenuti

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.

Monitorare lo stato degli obiettivi di Google Ads tra gli account MCC

Cosa fa questo script

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.

  • Si connette al proprio MCC e fa il giro di tutti gli account collegati.
  • Skips accounts you've blocklisted (excluded)
  • Estrae le prestazioni di conversione a livello di campagna in un periodo di tempo prestabilito.
  • Valuta lo stato di salute di ciascun obiettivo di conversione
  • Registrare i risultati in un foglio di Google, applicando i colori di sfondo allo stato.
  • Invia via e-mail un riepilogo dei soli account o obiettivi problematici.

Notifiche via e-mail

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

Esempio:

conti o obiettivi problematici
Messaggi:

Got it, your script needs two distinct email outputs:

  1. E-mail "Tutto bene" (se non vengono riscontrati problemi )

  2. ⚠️ 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

Requisiti

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.

  • Account MCC 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 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');

}

Script suddiviso per sezioni

CONFIGURAZIONE

  • SHEET_ID: destinazione di Google Sheets per tutti i risultati.
  • LOOKBACK_DAYS: Finestra di segnalazione in giorni
  • CONTI_ESCLUSI: Conti cliente da saltare
  • DESTINATARIO_EMAIL: A chi viene inviata l'email quando c'è un problema

main() Funzione

  • Apre il foglio, lo cancella e imposta le intestazioni.
  • Calcola l'intervallo di date
  • Eseguire un loop attraverso ogni sottoconto MCC
  • Skips any that are blocklisted
  • Utilizza CAMPAIGN_PERFORMANCE_REPORT per estrarre tutti i dati relativi agli obiettivi.
  • Per ogni obiettivo:
    • Aggregati conversioni totali
    • Assegna uno stato:
      • Attivo: conversioni > 0
      • Inattivo: obiettivo del test o non impostato
      • Necessità di attenzione: zero conversioni, non un test
      • Nessuna conversione recente: non vengono restituiti i dati dell'obiettivo
  • Aggiunge i dati al foglio
  • Richiama setStatusColumnColor() per contrassegnare ogni riga
  • Crea un elenco di segnalazioni e invia un'e-mail se viene riscontrato un problema.

setStatusColumnColor(foglio, riga, stato)

  • Applica un colore di sfondo alla colonna E in base allo stato dell'obiettivo:
    • Verde per attivo
    • Rosso per inattivo
    • Giallo per necessità di attenzione
    • Viola per assenza di attività

Aiutanti di data

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

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.

Passo 1: creare il foglio Google

Iniziare impostando la destinazione di uscita.

  1. Andare a Google Fogli
  2. Fare clic su "Vuoto" per creare un nuovo foglio di calcolo.
  3. Please give it a name like Goal Monitor
  4. La parte al centro è l'ID del foglio
  5. Incollare l'ID nello script dove si dice const SHEET_ID = '...'.

Passo 2: aprire il pannello degli script di Google Ads

Questo script verrà distribuito all'interno del vostro account MCC.

  1. Accedere all'account MCC di Google Ads
  2. Fare clic su "Strumenti e impostazioni" nella navigazione superiore.
  3. Under "Bulk Actions," select "Scripts."
  4. Fare clic sul pulsante più (+) per aggiungere un nuovo script.
  5. Incollare l'intero script esattamente come è stato scritto nell'editor di codice.

Passo 3: Autorizzare lo script

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

  1. Fare clic su "Autorizza" in alto a destra
  2. Selezionare l'account Google
  3. Approvare tutte le autorizzazioni richieste

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

Passo 4: Impostare la configurazione dello script

All'interno dello script, rivedete e modificate quanto segue:

  • SHEET_ID: inserire l'ID del foglio copiato.
  • LOOKBACK_DAYS: Modificare se necessario (l'impostazione predefinita è 60)
  • ID_CONTO_ESCLUSO: Aggiungere tutti gli account che non si desidera sottoporre a scansione
  • DESTINATARIO_EMAIL: Aggiungere l'e-mail o le e-mail per ricevere i rapporti di allerta.

Il resto dello script può essere lasciato esattamente com'è.

Fase 5: Esecuzione di un test manuale

Eseguitelo una volta manualmente per assicurarvi che tutto funzioni.

  1. Fare clic su "Esegui" nella parte superiore della navigazione.
  2. Attendere il completamento dell'esecuzione.
  3. Aprire il foglio Google collegato.
  4. Controllare:
    • Le intestazioni sono state create
    • I dati sono stati scritti per ogni account attivo.
    • Gli stati e i colori sono applicati correttamente nella Colonna E.

Fase 6: Pianificazione dello script (facoltativa)

Per rendere questa operazione automatica, impostatela su un programma ricorrente.

  1. Nell'editor di script, fare clic su "Crea pianificazione".
  2. Scegliere una frequenza (si consiglia quella giornaliera)
  3. Impostare l'orario di esecuzione (l'ideale è la mattina presto)
  4. Salvare e chiudere

Lo script verrà eseguito automaticamente e vi avviserà solo quando qualcosa non funziona.

Fase 7: Esaminare gli avvisi

Quando lo script viene eseguito, controlla tutti gli obiettivi di conversione. Se uno di essi è inattivo o non funziona, si riceve un'e-mail.

Sintesi

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.

Contatto

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.

Contatto Bright Vessel

Ottenete il vostro audit SEO gratuito

Modulo di verifica SEO gratuito

"*" indica i campi obbligatori

Questo campo è a scopo di convalida e deve essere lasciato invariato.
Contenuti
Vi piace questo articolo?
Condividetelo sui social media!
Ottenete il vostro audit SEO gratuito

Modulo di verifica SEO gratuito

"*" indica i campi obbligatori

Questo campo è a scopo di convalida e deve essere lasciato invariato.
Ottenete il vostro audit SEO gratuito

Modulo di verifica SEO gratuito

"*" indica i campi obbligatori

Questo campo è a scopo di convalida e deve essere lasciato invariato.
Vi è piaciuto questo articolo?
Condividetelo sui social media!

Date un'occhiata a un altro post del blog!

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