Comment surveiller l'état des objectifs Google Ads dans les comptes MCC ?
Comment surveiller l'état des objectifs Google Ads dans les comptes MCC ?

Comment surveiller l'état des objectifs Google Ads dans les comptes MCC à l'aide de Google Sheets ?

Cet article vous plaît ?
Partagez-le sur les médias sociaux !
Contenu

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.

Contrôler l'état des objectifs de Google Ads dans les comptes MCC

Ce que fait ce script

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.

  • Se connecte à votre MCC et parcourt en boucle chaque compte lié
  • Skips accounts you've blocklisted (excluded)
  • Extrait les performances de conversion au niveau de la campagne sur une période de recul déterminée.
  • Évalue la santé de chaque objectif de conversion
  • Enregistrer les résultats dans une feuille Google, en appliquant des couleurs d'arrière-plan à l'état.
  • Envoi par courrier électronique d'un résumé des seuls comptes ou objectifs problématiques

Notifications par courrier électronique

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

Exemple :

comptes ou objectifs problématiques
Messages :

Got it, your script needs two distinct email outputs:

  1. Courriel "All Good" (si aucun problème n'est détecté)

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

Exigences

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.

  • Compte Google Ads MCC
  • Feuille de calcul Google (doit être créée manuellement)

Le scénario original

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

}

Répartition des textes par section

CONFIGURATION

  • SHEET_ID : destination de Google Sheets pour tous les résultats
  • LOOKBACK_DAYS : Fenêtre de rapport en jours
  • EXCLUDED_ACCOUNT_IDS : Comptes clients à ignorer
  • RECIPIENT_EMAILS : Qui reçoit un e-mail en cas de problème ?

Fonction main()

  • Ouvre la feuille, l'efface et met en place les en-têtes.
  • Calcul de la plage de dates
  • Passe par tous les sous-comptes du MCC
  • Skips any that are blocklisted
  • Utilise CAMPAIGN_PERFORMANCE_REPORT pour obtenir toutes les données relatives aux objectifs.
  • Pour chaque objectif :
    • Agrégats des conversions totales
    • Attribue un statut :
      • Actif : conversions > 0
      • Inactif : objectif de test ou non défini
      • Attention : zéro conversion, pas de test
      • Pas de conversions récentes : aucune donnée d'objectif n'est renvoyée
  • Ajoute des données à la feuille
  • Appelle setStatusColumnColor() pour marquer chaque ligne
  • Établit une liste de signalements et envoie des courriels si un problème est détecté.

setStatusColumnColor(feuille, ligne, statut)

  • Applique une couleur d'arrière-plan à la colonne E en fonction de l'état de l'objectif :
    • Vert pour actif
    • Rouge pour inactif
    • Jaune pour besoin d'attention
    • Violet pour l'absence d'activité

Aides à la datation

  • getTodayDate() renvoie la date du jour dans le bon fuseau horaire
  • getDateXDaysAgo() renvoie la date d'il y a X jours

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.

Étape 1 : Création de la feuille Google

Commencez par configurer la destination de sortie.

  1. Aller à Google Sheets
  2. Cliquez sur "Vierge" pour créer une nouvelle feuille de calcul.
  3. Please give it a name like Goal Monitor
  4. La partie au milieu est l'identifiant de votre feuille.
  5. Collez l'ID dans votre script à l'endroit où il est indiqué const SHEET_ID = '...'

Étape 2 : Ouvrir le panneau des scripts Google Ads

Vous allez déployer ce script dans votre compte MCC.

  1. Connectez-vous à votre compte Google Ads MCC
  2. Cliquez sur "Outils et paramètres" dans la barre de navigation supérieure.
  3. Under "Bulk Actions," select "Scripts."
  4. Cliquez sur le bouton plus (+) pour ajouter un nouveau script.
  5. Coller l'ensemble du script tel qu'il est écrit dans l'éditeur de code.

Étape 3 : Autoriser le script

La première fois que vous utilisez le script, vous devez l'autoriser.

  1. Cliquez sur "Autoriser" en haut à droite
  2. Sélectionnez votre compte Google
  3. Approuver toutes les autorisations demandées

Vous devez terminer cette étape, sinon le script ne s'exécutera pas.

Étape 4 : Configuration du script

Dans le script, examinez et modifiez les éléments suivants :

  • SHEET_ID : Collez l'ID de la feuille que vous avez copiée.
  • LOOKBACK_DAYS : Modifier si nécessaire (la valeur par défaut est de 60)
  • EXCLUDED_ACCOUNT_IDS : Ajoutez les comptes que vous ne souhaitez pas scanner.
  • RECIPIENT_EMAILS : Ajouter l'email ou les emails qui recevront les rapports d'alerte

Vous pouvez laisser le reste du script tel quel.

Étape 5 : Exécuter un test manuel

Exécutez-le une fois manuellement pour vous assurer que tout fonctionne.

  1. Cliquez sur "Exécuter" en haut de la navigation.
  2. Attendre la fin de l'exécution.
  3. Ouvrez la feuille Google connectée.
  4. Vérifiez-le :
    • Les en-têtes ont été créés
    • Les données ont été écrites pour chaque compte actif.
    • Les statuts et les couleurs sont appliqués correctement dans la colonne E.

Étape 6 : Programmation du script (facultatif)

Pour rendre cette opération automatique, réglez-la sur un calendrier récurrent.

  1. Dans l'éditeur de script, cliquez sur "Créer un programme".
  2. Choisissez une fréquence (quotidienne est recommandée)
  3. Régler la durée d'exécution (l'idéal est de commencer tôt le matin)
  4. Enregistrer et fermer

Le script s'exécutera automatiquement et ne vous alertera que si quelque chose ne fonctionne pas.

Étape 7 : Examen des alertes

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.

Résumé

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.

Nous contacter

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.

Contacter Bright Vessel

Obtenez votre audit SEO gratuit

Formulaire d'audit SEO gratuit

"Les champs obligatoires sont indiqués par un astérisque(*)

Ce champ est utilisé à des fins de validation et ne doit pas être modifié.
Contenu
Cet article vous plaît ?
Partagez-le sur les médias sociaux !
Obtenez votre audit SEO gratuit

Formulaire d'audit SEO gratuit

"Les champs obligatoires sont indiqués par un astérisque(*)

Ce champ est utilisé à des fins de validation et ne doit pas être modifié.
Obtenez votre audit SEO gratuit

Formulaire d'audit SEO gratuit

"Les champs obligatoires sont indiqués par un astérisque(*)

Ce champ est utilisé à des fins de validation et ne doit pas être modifié.
Cet article vous a plu ?
Partagez-le sur les médias sociaux !

Consultez un autre article de blog !

Retour à tous les articles du blog
2024 Bright Vessel. Tous droits réservés.
croisermenuchevron vers le basflèche-gauche