← Google AdsGoogle Ads

Google Ads Scripts : automatiser la gestion de ses campagnes

Découvrir et utiliser les scripts Google Ads pour automatiser la gestion de ses campagnes : exemples concrets de scripts utiles, installation pas à pas, bonnes pratiques et limites de l'automatisation.

Par Kenoby8 min de lecture

En bref — Les scripts Google Ads sont des programmes JavaScript qui s'exécutent directement dans votre compte Google Ads pour automatiser des tâches répétitives : pauser des mots-clés non rentables, ajuster les enchères selon des règles métier, envoyer des rapports automatiques ou surveiller les anomalies budgétaires. Accessibles sans compétences techniques avancées, ils comblent les lacunes de l'interface native de Google Ads.

Qu'est-ce qu'un script Google Ads ?

Les scripts Google Ads (anciennement AdWords Scripts) sont disponibles depuis 2012. Il s'agit de code JavaScript exécuté directement dans l'interface Google Ads, avec accès à l'intégralité des données de votre compte (campagnes, groupes d'annonces, mots-clés, conversions, etc.) et aux APIs Google (Sheets, Drive, Gmail, Analytics).

Ce que les scripts permettent de faire

  • Lire et modifier : enchères, statuts, budgets, textes d'annonces
  • Créer : mots-clés, annonces, campagnes entières
  • Rapporter : extraire des données vers Google Sheets ou par email
  • Surveiller : détecter les anomalies (budget dépassé, CTR effondré, pas d'impression)
  • Intégrer : récupérer des données externes (météo, stocks, prix concurrents) via des URLs

Différence avec les règles automatisées

Google Ads dispose aussi de "règles automatisées" (interface graphique). Les scripts vont beaucoup plus loin :

| Critère | Règles automatisées | Scripts | |---|---|---| | Complexité logique | Conditions simples | Logique conditionnelle complète | | Sources de données | Données Google Ads uniquement | Google Ads + Sheets + APIs externes | | Actions disponibles | Limitées à l'interface | Tout ce qu'on peut faire manuellement | | Courbe d'apprentissage | Aucune | JavaScript basique | | Fréquence d'exécution | Min. toutes les heures | Jusqu'à toutes les heures |

Installer un script : procédure pas à pas

L'installation d'un script prend moins de 5 minutes une fois le code disponible.

Accéder à l'éditeur de scripts

  1. Dans Google Ads, cliquez sur l'icône Outils et paramètres (clé à molette)
  2. Rubrique "Scripts" dans le menu "Actions groupées"
  3. Cliquez sur le + pour créer un nouveau script
  4. Donnez un nom explicite au script (vous en aurez plusieurs)

Coller et tester le code

  1. Effacez le code par défaut dans l'éditeur
  2. Collez votre script
  3. Cliquez sur "Aperçu" pour exécuter en mode simulation (aucune modification réelle)
  4. Lisez attentivement les logs dans la console pour détecter les erreurs
  5. Si l'aperçu est satisfaisant, cliquez sur "Exécuter"

Paramétrer la fréquence d'exécution

Après avoir sauvegardé le script, configurez sa planification :

  • Horaire : toutes les heures (pour la surveillance en temps réel)
  • Quotidien : à une heure précise (pour les rapports et ajustements quotidiens)
  • Hebdomadaire : pour les audits hebdomadaires
  • Mensuel : pour les récapitulatifs mensuels

Important : les scripts s'exécutent dans le fuseau horaire du compte Google Ads. Vérifiez ce paramètre avant de planifier.

Autorisations requises

Au premier lancement, Google demande d'autoriser l'accès du script à votre compte. Pour les scripts qui écrivent dans Google Sheets ou envoient des emails, des autorisations supplémentaires sont demandées. Lisez attentivement les permissions demandées.

5 scripts utiles à installer immédiatement

Script 1 : Pause des mots-clés sans conversion

Ce script analyse tous vos mots-clés actifs et pause ceux qui ont dépensé plus de X euros sans générer la moindre conversion sur les N derniers jours.

// Pause keywords with spend > threshold but 0 conversions
// Configurable parameters
var COST_THRESHOLD = 50; // Euros
var LOOKBACK_DAYS = 30;
var SEND_EMAIL = true;
var EMAIL_ADDRESS = "votre@email.com";

function main() {
  var report = [];
  var dateRange = getDateRange(LOOKBACK_DAYS);
  
  var keywordIterator = AdsApp.keywords()
    .withCondition("Clicks > 0")
    .withCondition("CampaignStatus = ENABLED")
    .withCondition("AdGroupStatus = ENABLED")
    .withCondition("Status = ENABLED")
    .forDateRange(dateRange)
    .withCondition("Cost > " + COST_THRESHOLD)
    .withCondition("Conversions < 1")
    .get();
  
  while (keywordIterator.hasNext()) {
    var keyword = keywordIterator.next();
    var stats = keyword.getStatsFor(dateRange);
    keyword.pause();
    report.push(keyword.getText() + " | " + 
                keyword.getCampaign().getName() + " | " +
                stats.getCost().toFixed(2) + "€");
  }
  
  if (SEND_EMAIL && report.length > 0) {
    MailApp.sendEmail(EMAIL_ADDRESS,
      "Mots-clés pausés - " + new Date().toLocaleDateString(),
      report.join("\n"));
  }
  
  Logger.log(report.length + " mots-clés pausés.");
}

function getDateRange(days) {
  var end = new Date();
  var start = new Date(end.getTime() - days * 24 * 60 * 60 * 1000);
  return [
    Utilities.formatDate(start, AdsApp.currentAccount().getTimeZone(), "yyyyMMdd"),
    Utilities.formatDate(end, AdsApp.currentAccount().getTimeZone(), "yyyyMMdd")
  ].join(",");
}

Paramètres à ajuster :

  • COST_THRESHOLD : le seuil de dépense en euros (souvent 2-3× votre CPA cible)
  • LOOKBACK_DAYS : la fenêtre d'analyse (30 jours pour la plupart des comptes)
  • EMAIL_ADDRESS : votre email pour recevoir la liste des mots-clés pausés

Script 2 : Rapport de performance quotidien vers Google Sheets

Ce script exporte chaque matin les métriques clés de vos campagnes vers un Google Sheet pour suivre l'évolution des performances.

var SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/VOTRE_ID/";

function main() {
  var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
  var sheet = spreadsheet.getSheetByName("Données") || 
              spreadsheet.insertSheet("Données");
  
  var yesterday = getYesterdayRange();
  
  var campaignIterator = AdsApp.campaigns()
    .withCondition("Status = ENABLED")
    .forDateRange(yesterday)
    .get();
  
  while (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    var stats = campaign.getStatsFor(yesterday);
    
    sheet.appendRow([
      new Date().toLocaleDateString(),
      campaign.getName(),
      stats.getImpressions(),
      stats.getClicks(),
      (stats.getCtr() * 100).toFixed(2) + "%",
      stats.getCost().toFixed(2),
      stats.getConversions(),
      stats.getConversions() > 0 ? 
        (stats.getCost() / stats.getConversions()).toFixed(2) : "N/A"
    ]);
  }
}

Script 3 : Alerte budget dépassé

Ce script surveille en temps réel le budget quotidien de chaque campagne et envoie une alerte email si une campagne atteint 80% ou 100% de son budget avant 18h.

var ALERT_THRESHOLD = 0.80; // 80% du budget
var EMAIL_ADDRESS = "votre@email.com";
var ALERT_HOUR = 18; // N'alerter que si avant 18h

function main() {
  var currentHour = new Date().getHours();
  if (currentHour >= ALERT_HOUR) return;
  
  var alerts = [];
  var campaignIterator = AdsApp.campaigns()
    .withCondition("Status = ENABLED")
    .forDateRange("TODAY")
    .get();
  
  while (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    var budget = campaign.getBudget().getAmount();
    var spent = campaign.getStatsFor("TODAY").getCost();
    var ratio = spent / budget;
    
    if (ratio >= ALERT_THRESHOLD) {
      alerts.push(campaign.getName() + 
                  " : " + (ratio * 100).toFixed(0) + "% du budget utilisé" +
                  " (" + spent.toFixed(2) + "€ / " + budget.toFixed(2) + "€)");
    }
  }
  
  if (alerts.length > 0) {
    MailApp.sendEmail(EMAIL_ADDRESS,
      "⚠️ Alerte budget Google Ads",
      alerts.join("\n"));
  }
}

Script 4 : Ajustement d'enchère selon le score de qualité

Ce script identifie les mots-clés avec un Quality Score faible (≤ 4) et ajuste leur enchère à la baisse pour éviter de surpayer des positions dégradées.

var LOW_QS_THRESHOLD = 4;
var BID_REDUCTION_FACTOR = 0.80; // Réduire à 80% de l'enchère actuelle
var MIN_BID = 0.05; // Enchère minimale en euros

function main() {
  var keywordIterator = AdsApp.keywords()
    .withCondition("Status = ENABLED")
    .withCondition("AdGroupStatus = ENABLED")
    .withCondition("CampaignStatus = ENABLED")
    .withCondition("QualityScore <= " + LOW_QS_THRESHOLD)
    .withCondition("HasQualityScore = true")
    .get();
  
  var count = 0;
  while (keywordIterator.hasNext()) {
    var keyword = keywordIterator.next();
    var currentBid = keyword.bidding().getCpc();
    var newBid = Math.max(currentBid * BID_REDUCTION_FACTOR, MIN_BID);
    keyword.bidding().setCpc(newBid);
    count++;
  }
  
  Logger.log(count + " enchères ajustées pour QS bas.");
}

Script 5 : Détection des annonces sans impression

Ce script identifie les annonces activées qui n'ont généré aucune impression sur les 14 derniers jours et envoie un rapport.

function main() {
  var noImpressionAds = [];
  
  var adIterator = AdsApp.ads()
    .withCondition("Status = ENABLED")
    .withCondition("AdGroupStatus = ENABLED")
    .withCondition("CampaignStatus = ENABLED")
    .withCondition("Impressions = 0")
    .forDateRange("LAST_14_DAYS")
    .get();
  
  while (adIterator.hasNext()) {
    var ad = adIterator.next();
    noImpressionAds.push(
      ad.getCampaign().getName() + " > " + 
      ad.getAdGroup().getName() + " > " +
      ad.getHeadlinePart1()
    );
  }
  
  Logger.log("Annonces sans impression : " + noImpressionAds.length);
  noImpressionAds.forEach(function(ad) { Logger.log(ad); });
}

Bibliothèques de scripts gratuits

Vous n'avez pas à écrire les scripts from scratch. Des bibliothèques de scripts éprouvés sont disponibles gratuitement :

  • Google Ads Developer Blog : scripts officiels de Google
  • Brainlabs : bibliothèque de scripts avancés open-source (brainlabs.com/scripts)
  • Optmyzr : scripts prêts à l'emploi pour les tâches courantes
  • Miles McNair (milesmcnair.com) : scripts spécialisés PMax et automation avancée
  • PPC Hero : tutoriels et scripts pour cas d'usage variés

Les limites des scripts Google Ads

Limites techniques

| Limite | Valeur | |---|---| | Durée d'exécution max | 30 minutes | | Objets traités par exécution | ~250 000 | | Fréquence maximale | Toutes les heures | | Requêtes URL externes | 20 000 par exécution |

Ce que les scripts ne remplacent pas

Les scripts automatisent les tâches répétitives mais ne remplacent pas le jugement humain sur :

  • La stratégie globale d'enchères (CPA cible, ROAS)
  • La création et l'amélioration des annonces
  • L'analyse des opportunités de croissance
  • Les décisions de restructuration de compte

Risques à connaître

  • Un script mal configuré peut pauser des mots-clés rentables ou modifier des enchères incorrectement. Toujours tester en mode Aperçu avant d'activer.
  • Les scripts accèdent à l'intégralité du compte : vérifiez la source du script avant de l'installer, surtout s'il vient d'un tiers inconnu.
  • Une mise à jour de l'API Google Ads peut casser des scripts existants : révisez vos scripts après les grandes mises à jour Google Ads.

FAQ : Scripts Google Ads

Faut-il savoir coder pour utiliser les scripts Google Ads ?

Pas nécessairement. Pour les scripts existants (Brainlabs, Google), il suffit de copier-coller le code et d'ajuster quelques variables de configuration clairement documentées. Comprendre les bases du JavaScript (variables, conditions, boucles) suffit pour personnaliser ces scripts. Pour créer des scripts from scratch, un niveau intermédiaire est recommandé.

Les scripts fonctionnent-ils sur les comptes MCC (agences) ?

Oui, Google Ads dispose d'une fonctionnalité "Scripts MCC" qui permet d'exécuter un script sur tous les comptes clients d'un MCC en une seule exécution. C'est particulièrement utile pour les alertes budgétaires et les rapports consolidés multi-comptes.

Un script peut-il accéder aux données Performance Max ?

Partiellement. Les scripts peuvent lire les métriques de performance des campagnes PMax (coût, conversions, ROAS) et modifier le budget. Ils n'ont pas accès aux asset groups de manière aussi fine qu'aux groupes d'annonces classiques. Google améliore progressivement l'API pour PMax.

Que se passe-t-il si un script génère une erreur ?

Google Ads envoie un email d'alerte à l'administrateur du compte si un script échoue (état "Erreur"). Le script ne fait rien en cas d'erreur : il n'y a pas de risque de modification partielle. Vous pouvez consulter les logs de chaque exécution dans l'historique du script.


Kenoby intègre les scripts Google Ads dans son workflow de gestion de campagnes pour automatiser les tâches à faible valeur ajoutée et concentrer son expertise sur l'optimisation stratégique.