Ce tutoriel présente un script qui vérifie l'activité des objectifs de conversion sur tous les comptes de votre CMC. Il enregistre les résultats dans une feuille Google, marque l'état de santé de chaque objectif, attribue des codes de couleur au statut et envoie un résumé par courrier électronique uniquement en cas de problème.
Il n'y a pas d'outils inutiles ou de tableaux de bord de tiers, seulement un contrôle brut et une visibilité complète.
Ce script vérifie chaque compte Google Ads sous votre MCC et évalue le statut de chaque objectif de conversion sur une période définie. Au lieu de deviner quels objectifs sont actifs ou non, ce système vous donne un aperçu en temps réel dans une feuille Google et vous alerte uniquement lorsque quelque chose nécessite votre attention.
There will be two email notifications: one for accounts needing attention and the other for all good accounts.
Exemple :
Messages :
Got it, your script needs two distinct email outputs:
Courriel "All Good" (si aucun problème n'est détecté)
⚠️ Email "Needs Attention" (si des objectifs sont inactifs, manquants ou peu performants)
Voici précisément à quoi devraient ressembler les deux versions, en utilisant votre exemple de données et votre logique actuelle :
Message n° 1
Tous les objectifs de conversion surveillés font état de l'activité des 60 derniers jours.
Aucun problème n'a été constaté dans aucun des comptes.
Voir le rapport complet :
https://docs.google.com/spreadsheets/d/yoursheetid
Message n°2
Les objectifs de conversion suivants peuvent nécessiter une révision (par exemple, pas de conversions récentes ou inactives) :
Bright Widgets Inc (123-456-789) - Soumission d'un formulaire de contact (Attention)
Acme Corp (987-654-321) - Planifier un appel (Inactif)
Acme Corp (987-654-321) - Inscription à l'essai gratuit (Attention)
Rocket Leads (456-789-123) - (configuré, pas d'activité) (Pas de conversions récentes)
Beta Test Group (321-654-987) - (non configuré) (Inactif)
Zebra Analytics (999-111-222) - Téléchargement de livre blanc (Attention)
Voir le rapport complet :
https://docs.google.com/spreadsheets/d/yoursheetid
Avant de déployer le script, assurez-vous que votre environnement est correctement configuré. Ce script est conçu pour être exécuté dans un contexte Google Ads MCC afin d'écrire des données et d'envoyer des alertes.
Il s'agit du script dans sa forme complète et non éditée. Tous les commentaires, le formatage et la logique sont exactement tels qu'ils ont été écrits à l'origine. Ne le modifiez pas si vous avez l'intention de suivre la décomposition plus loin dans ce tutoriel.
// ========== 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.
Commencez par configurer la destination de sortie.
Vous allez déployer ce script dans votre compte MCC.
La première fois que vous utilisez le script, vous devez l'autoriser.
Vous devez terminer cette étape, sinon le script ne s'exécutera pas.
Dans le script, examinez et modifiez les éléments suivants :
Vous pouvez laisser le reste du script tel quel.
Exécutez-le une fois manuellement pour vous assurer que tout fonctionne.
Pour rendre cette opération automatique, réglez-la sur un calendrier récurrent.
Le script s'exécutera automatiquement et ne vous alertera que si quelque chose ne fonctionne pas.
Lorsque le script s'exécute, il vérifie tous les objectifs de conversion. Si l'un d'entre eux est inactif ou ne se déclenche pas, vous recevez un courrier électronique.
Ce script n'est pas un simple recueil de données. C'est un chien de garde pour chaque objectif de conversion dans l'ensemble de votre MCC Google Ads. Vous êtes alerté lorsque quelque chose se brise, se bloque ou cesse d'être suivi. Lorsque tout va bien, vous obtenez le silence.
Il vérifie chaque compte que vous gérez, signale les objectifs inactifs ou sous-performants et fournit un rapport filtré, sans bruit, directement dans votre boîte de réception. La feuille Google vous permet de visualiser en temps réel l'état des objectifs par compte, par nom d'objectif et par volume de conversion, avec des repères visuels intégrés.
Vous ne fouillez pas dans les interfaces. Vous n'attendez pas la fin du mois pour vous rendre compte que vous avez été aveugle. Vous contrôlez la situation avant qu'elle ne devienne problématique.
Consultez les articles similaires :
Consultez les articles similaires :
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.
Vous en avez assez de deviner si votre suivi fonctionne ? Vous voulez une équipe qui construise des systèmes plutôt que de simples rapports ?
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.
Parlez à l'équipe qui construit ce que les autres agences falsifient.
"Les champs obligatoires sont indiqués par un astérisque(*)
"Les champs obligatoires sont indiqués par un astérisque(*)
"Les champs obligatoires sont indiqués par un astérisque(*)