Hoe de doelstatus van Google Ads in verschillende MCC-accounts te bewaken
Hoe de doelstatus van Google Ads in verschillende MCC-accounts te bewaken

Zo bewaakt u de doelstatus van Google Ads Across MCC Accounts met behulp van Google Sheets

Geniet je van dit artikel?
Deel het op sociale media!
Inhoud

Deze zelfstudie documenteert een script dat de activiteit van conversiedoelen controleert voor alle accounts onder je MCC. Het schrijft de resultaten naar een Google Sheet, labelt de gezondheid van elk doel, geeft de status een kleurcode en stuurt alleen een samenvatting per e-mail als er een probleem is.

Er zijn geen onnodige tools of dashboards van derden, alleen ruwe controle en volledige zichtbaarheid.

De doelstatus van Google Ads bewaken voor alle MCC-accounts

Wat dit script doet

Dit script controleert elk Google Ads account onder je MCC en evalueert de status van elk conversiedoel over een bepaalde terugkijkperiode. In plaats van te raden welke doelen actief of gebroken zijn, geeft dit systeem je een realtime momentopname in een Google Sheet en waarschuwt het je alleen wanneer iets je aandacht nodig heeft.

  • Maakt verbinding met je MCC en doorloopt elke gekoppelde account
  • Skips accounts you've blocklisted (excluded)
  • Haalt de conversieprestaties op campagneniveau op over een ingestelde terugkijkperiode
  • Evalueert de gezondheid van elk conversiedoel
  • Resultaten vastleggen in een Google Sheet en achtergrondkleuren toepassen op de status
  • E-mails met een overzicht van alleen problematische accounts of doelen

E-mailmeldingen

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

Voorbeeld:

problematische rekeningen of doelen
Berichten:

Got it, your script needs two distinct email outputs:

  1. ✅ "Alles goed" e-mail (als er geen problemen zijn gevonden)

  2. ⚠️ E-mail "Aandacht nodig" (als er doelen inactief zijn, ontbreken of slecht presteren)

Hier ziet u precies hoe beide versies eruit zouden moeten zien, met behulp van uw voorbeeldgegevens en huidige logica:

Bericht #1

Alle bewaakte conversiedoelen rapporteren activiteit over de afgelopen 60 dagen.

In geen enkele account zijn problemen gevonden.

Bekijk het volledige rapport:
https://docs.google.com/spreadsheets/d/yoursheetid

Bericht #2

De volgende conversiedoelen moeten mogelijk worden herzien (bijv. geen recente conversies of inactief):

Bright Widgets Inc (123-456-789) - Contact Form Submission (Behoefte aan aandacht)
Acme Corp (987-654-321) - Gesprek plannen (Inactief)
Acme Corp (987-654-321) - Gratis proefabonnement (aandacht nodig)
Rocket Leads (456-789-123) - (geconfigureerd, geen activiteit) (Geen recente conversies)
Beta Test Group (321-654-987) - (niet ingesteld) (Inactief)
Zebra Analytics (999-111-222) - Whitepaper downloaden (Aandacht nodig)

Bekijk het volledige rapport:
https://docs.google.com/spreadsheets/d/yoursheetid

Vereisten

Voordat je het script implementeert, moet je ervoor zorgen dat je omgeving correct is geconfigureerd. Dit script is ontworpen om te draaien binnen een Google Ads MCC-context om gegevens te schrijven en waarschuwingen te versturen.

  • Google Ads MCC-account
  • Google Spreadsheet (moet handmatig worden aangemaakt)

Het originele script

Dit is het script in zijn volledige, onbewerkte vorm. Alle opmerkingen, opmaak en logica zijn precies zoals oorspronkelijk geschreven. Wijzig dit niet als je van plan bent de uitsplitsing later in deze tutorial te volgen.

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

}

Opsplitsing van scripts per sectie

CONFIGURATIE

  • SHEET_ID: Google Sheets-bestemming voor alle uitvoer
  • TERUGKIJKDAGEN: Rapportagevenster in dagen
  • UITGESLOTEN_ACCOUNT_IDS: Over te slaan klantaccounts
  • ONTVANGER_EMAILS: Wie wordt gemaild als er een probleem is

main() Functie

  • Opent het blad, maakt het leeg en stelt kopteksten in
  • Berekent het datumbereik
  • Loopt door elke MCC-subaccount
  • Skips any that are blocklisted
  • Gebruikt CAMPAIGN_PERFORMANCE_REPORT om alle doelgegevens op te halen
  • Voor elk doel:
    • Totaal aantal conversies
    • Wijst een status toe:
      • Actief: conversies > 0
      • Inactief: testdoel of niet ingesteld
      • Aandacht nodig: nul conversies, geen test
      • Geen recente conversies: geen doelgegevens geretourneerd
  • Voegt gegevens toe aan het blad
  • Roept setStatusColumnColor() op om elke rij te markeren
  • Stelt een lijst op met gemarkeerde problemen en stuurt een e-mail als er een probleem is gevonden

statuskolomkleur instellen(blad, rij, status)

  • Past een achtergrondkleur toe op kolom E afhankelijk van de doelstatus:
    • Groen voor actief
    • Rood voor inactief
    • Geel voor heeft aandacht nodig
    • Paars voor geen activiteit

Datum helpers

  • getTodayDate() retourneert de datum van vandaag in de juiste tijdzone
  • getDateXDaysAgo() geeft de datum X dagen geleden terug

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.

Stap 1: Maak het Google-blad

Begin met het instellen van de uitvoerbestemming.

  1. Ga naar Google Sheets
  2. Klik op "Blanco" om een nieuwe spreadsheet te maken
  3. Please give it a name like Goal Monitor
  4. Het gedeelte in het midden is je Blad-ID
  5. Plak de ID in je script waar staat const SHEET_ID = '...'.

Stap 2: Open het Google Ads Scripts-paneel

U zult dit script implementeren in uw MCC-account.

  1. Log in op uw Google Ads MCC-account
  2. Klik op "Gereedschappen en instellingen" in de bovenste navigatiebalk
  3. Under "Bulk Actions," select "Scripts."
  4. Klik op de plusknop (+) om een nieuw script toe te voegen
  5. Plak het hele script precies zoals het geschreven is in de code editor

Stap 3: Het script autoriseren

De eerste keer dat je het script gebruikt, moet je het autoriseren.

  1. Klik rechtsboven op "Autoriseren
  2. Selecteer uw Google-account
  3. Alle aangevraagde toestemmingen goedkeuren

Je moet deze stap voltooien, anders wordt het script niet uitgevoerd.

Stap 4: Uw scriptconfiguratie instellen

Bekijk en wijzig het volgende in het script:

  • SHEET_ID: plak je gekopieerde blad-ID erin
  • TERUGKIJKDAGEN: Verander indien nodig (standaard is 60)
  • UITGESLOTEN_ACCOUNT_IDS: Voeg accounts toe die je niet wilt laten scannen
  • ONTVANGER_EMAILS: Voeg het e-mailadres of de e-mailadressen toe om waarschuwingsrapporten te ontvangen

Je kunt de rest van het script precies laten zoals het is.

Stap 5: Voer een handmatige test uit

Voer het een keer handmatig uit om te controleren of alles werkt.

  1. Klik op "Uitvoeren" bovenaan de navigatie.
  2. Wacht tot de uitvoering is voltooid.
  3. Open de gekoppelde Google Sheet.
  4. Controleer dat:
    • Kopteksten zijn gemaakt
    • Er werden gegevens geschreven voor elke actieve account.
    • Statussen en kleuren worden correct toegepast in kolom E.

Stap 6: Het script plannen (optioneel)

Om dit automatisch te laten verlopen, stel je het in op een terugkerend schema.

  1. Klik in de scripteditor op "Schema maken".
  2. Kies een frequentie (dagelijks wordt aanbevolen)
  3. Stel de looptijd in (vroeg in de ochtend is ideaal)
  4. Opslaan en sluiten

Het script wordt automatisch uitgevoerd en geeft alleen een waarschuwing als er iets niet in orde is.

Stap 7: Waarschuwingen beoordelen

Wanneer het script wordt uitgevoerd, worden alle conversiedoelen gecontroleerd. Als er doelen inactief zijn of niet afgaan, ontvang je een e-mail.

Samenvatting

Dit script is niet zomaar een gegevensdump. Het is een waakhond voor elk conversiedoel in je hele Google Ads MCC. Je krijgt een waarschuwing als er iets kapot gaat, hapert of stilletjes stopt met tracken. Als alles in orde is, krijg je stilte.

Het controleert elke account die je beheert, markeert inactieve of slecht presterende doelen en levert een gefilterd, geruisloos rapport rechtstreeks in je inbox. Het Google Sheet geeft je een live overzicht van de doelstatus per account, doelnaam en conversievolume, met ingebouwde visuele aanwijzingen.

Je graaft niet door interfaces. Je wacht niet tot het einde van de maand om je te realiseren dat je blind bent geweest. Je hebt controle voordat het een probleem wordt.

Bekijk soortgelijke berichten:

Bekijk soortgelijke berichten:

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.

Neem contact met ons op

Ben je het zat om te gissen of je tracking werkt? Wil je een team dat systemen bouwt in plaats van alleen rapporten?

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.

Praat met het team dat bouwt wat andere bureaus namaken.

Contact met Bright Vessel

Ontvang uw gratis SEO audit

Gratis SEO auditformulier

"*" geeft verplichte velden aan

Dit veld is voor validatiedoeleinden en moet ongewijzigd blijven.
Inhoud
Geniet je van dit artikel?
Deel het op sociale media!
Ontvang uw gratis SEO audit

Gratis SEO auditformulier

"*" geeft verplichte velden aan

Dit veld is voor validatiedoeleinden en moet ongewijzigd blijven.
Ontvang uw gratis SEO audit

Gratis SEO auditformulier

"*" geeft verplichte velden aan

Dit veld is voor validatiedoeleinden en moet ongewijzigd blijven.
Genoten van dit artikel?
Deel het op sociale media!

Bekijk een andere blogpost!

Terug naar alle blogberichten

Laten we samenwerken!

© 2024 Bright Vessel. Alle rechten voorbehouden.
kruismenuchevron-donspijl-links