
Votre budget Google Ads part en fumée pendant la nuit, et vous l'apprenez au matin en consultant vos rapports ? C'est exactement le type de problème qu'un script Google Ads règle en dix minutes d'installation. Les scripts sont des programmes JavaScript qui s'exécutent directement dans votre compte, automatisent des tâches répétitives et vous alertent avant que les situations critiques ne dégénèrent. Ce guide vous fournit le code complet, opérationnel, prêt à coller, pour six cas d'usage fréquents.
Qu'est-ce qu'un script Google Ads et pourquoi en utiliser un ?
Un script Google Ads est un programme JavaScript inséré dans l'interface Google Ads pour interagir avec votre compte via l'API Google Ads Scripts. Il peut lire vos données (campagnes, mots-clés, annonces), modifier des paramètres (enchères, statuts) et envoyer des alertes par email, le tout sans intervention manuelle. L'exécution est planifiée : toutes les heures, chaque jour, chaque semaine selon vos besoins.
Concrètement, un compte actif génère des dizaines de signaux quotidiens que personne ne surveille en temps réel : mots-clés dont le Quality Score chute, annonces pointant vers des URL 404, budget épuisé à 14h alors que votre cible convertit le soir. Les règles automatisées natives de Google couvrent les cas simples, mais elles manquent de logique conditionnelle complexe et de reporting personnalisé. C'est là que les scripts prennent le dessus, notamment pour un consultant Google Ads qui pilote plusieurs comptes en parallèle.
Selon la documentation officielle Google Ads Scripts, chaque script peut traiter jusqu'à 250 000 opérations par exécution et envoyer jusqu'à 100 emails par jour. Ces quotas couvrent largement la majorité des comptes, y compris les comptes MCC multi-clients.
Comment installer un script Google Ads en 3 étapes
L'installation prend moins de cinq minutes. Depuis votre interface Google Ads, rendez-vous dans Outils et paramètres > Scripts (sous la section « Actions groupées »). Cliquez sur le bouton bleu « + » pour créer un nouveau script : une fenêtre d'éditeur JavaScript s'ouvre directement dans le navigateur.
Collez votre code dans l'éditeur, puis cliquez sur Aperçu pour tester l'exécution sans qu'elle soit réellement appliquée à votre compte. Les logs s'affichent en bas de l'écran : vérifiez qu'aucune erreur n'apparaît avant de sauvegarder. Une fois validé, définissez la fréquence d'exécution (horaire, quotidienne, hebdomadaire) et autorisez l'accès OAuth quand Google vous le demande.
Pour les comptes MCC, le processus est identique mais vous accédez à Outils > Scripts au niveau MCC, ce qui vous permet d'exécuter un même script sur l'ensemble de vos comptes clients en une seule opération. C'est un gain de temps considérable pour la gestion multi-clients, et c'est précisément l'un des angles que les tutoriels habituels négligent.
6 scripts Google Ads prêts à copier-coller
Script 1 : alerte budget quotidien
Ce script vérifie chaque heure si votre dépense du jour dépasse un seuil défini et vous envoie un email d'alerte. Idéal pour éviter les dépassements sur les campagnes Performance Max, qui peuvent s'emballer en quelques heures sans signal visible. C'est un legit script Google Ads dans sa forme la plus directe : simple, rapide et immédiatement actionnable.
var EMAIL = "votre@email.com";
var SEUIL_EUROS = 200;
function main() {
var stats = AdsApp.currentAccount().getStatsFor("TODAY");
var depense = stats.getCost();
if (depense > SEUIL_EUROS) {
MailApp.sendEmail({
to: EMAIL,
subject: "[ALERTE] Budget dépassé : " + depense.toFixed(2) + " €",
body: "Dépense du jour : " + depense.toFixed(2) + " €\nSeuil configuré : " + SEUIL_EUROS + " €"
});
}
Logger.log("Dépense actuelle : " + depense.toFixed(2) + " €");
}
Fréquence recommandée : toutes les heures.
Script 2 : pause automatique des mots-clés sous-performants
Ce script met en pause les mots-clés qui ont généré plus de 50 clics sans aucune conversion sur les 30 derniers jours. Il fonctionne comme un negative keyword script Google Ads implicite : au lieu d'ajouter des exclusions, il élimine directement les mots-clés qui drainent votre budget sans retour mesurable. Adaptez le seuil de clics à votre volume habituel.
var SEUIL_CLICS = 50;
var PERIODE = "LAST_30_DAYS";
function main() {
var mots_cles = AdsApp.keywords()
.withCondition("Clicks > " + SEUIL_CLICS)
.withCondition("Conversions = 0")
.withCondition("Status = ENABLED")
.forDateRange(PERIODE)
.get();
var count = 0;
while (mots_cles.hasNext()) {
var mc = mots_cles.next();
mc.pause();
count++;
}
Logger.log("Mots-clés mis en pause : " + count);
}
Fréquence recommandée : hebdomadaire. Avant d'activer, passez toujours par l'aperçu pour valider la liste des mots-clés ciblés.
Script 3 : détection des annonces avec liens cassés
Un broken link checker script Google Ads est indispensable si votre site évolue régulièrement, que vous gérez une boutique e-commerce ou que vous supervisez plusieurs comptes. Ce script vérifie toutes les URL finales actives et signale celles qui retournent une erreur HTTP 400 ou 500. Un lien cassé laissé actif, c'est du budget brûlé sur une page inexistante, un taux de rebond immédiat et un Quality Score qui se dégrade en silence.
var EMAIL = "votre@email.com";
function main() {
var urls_cassees = [];
var annonces = AdsApp.ads()
.withCondition("Status = ENABLED")
.withCondition("CampaignStatus = ENABLED")
.withCondition("AdGroupStatus = ENABLED")
.get();
while (annonces.hasNext()) {
var annonce = annonces.next();
var url = annonce.urls().getFinalUrl();
if (url) {
try {
var reponse = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
if (reponse.getResponseCode() >= 400) {
urls_cassees.push(url + " [HTTP " + reponse.getResponseCode() + "]");
}
} catch(e) {
urls_cassees.push(url + " [Erreur réseau]");
}
}
}
if (urls_cassees.length > 0) {
MailApp.sendEmail({
to: EMAIL,
subject: "[ALERTE] " + urls_cassees.length + " liens cassés détectés",
body: urls_cassees.join("\n")
});
}
Logger.log("URLs vérifiées. Cassées : " + urls_cassees.length);
}
Fréquence recommandée : quotidienne. Sur les grands comptes, filtrez par campagnes prioritaires pour rester sous les quotas API.
Script 4 : rapport Quality Score hebdomadaire
Ce script compile le Quality Score de tous vos mots-clés actifs sous le seuil de 7 et vous envoie un rapport CSV par email chaque lundi matin. C'est le point de départ naturel de tout audit de compte Google Ads : identifier en un coup d'œil les mots-clés qui tirent vos enchères vers le haut et dégradent votre rentabilité globale. Il s'articule bien avec une analyse n-gram script Google Ads pour croiser les patterns de requêtes et les scores de pertinence.
var EMAIL = "votre@email.com";
function main() {
var rapport = "Mot-clé,Groupe d'annonces,Campagne,Quality Score\n";
var mots_cles = AdsApp.keywords()
.withCondition("Status = ENABLED")
.withCondition("QualityScore < 7")
.get();
while (mots_cles.hasNext()) {
var mc = mots_cles.next();
rapport += [
mc.getText(),
mc.getAdGroup().getName(),
mc.getCampaign().getName(),
mc.getQualityScore()
].join(",") + "\n";
}
MailApp.sendEmail({
to: EMAIL,
subject: "Quality Score rapport - " + new Date().toLocaleDateString("fr-FR"),
body: "Mots-clés avec Quality Score < 7 ci-joints.",
attachments: [Utilities.newBlob(rapport, "text/csv", "quality_score.csv")]
});
}
Fréquence recommandée : hebdomadaire (lundi matin).
Script 5 : labelizer automatique des mots-clés performants
Le labelizer script Google Ads est un classique des comptes bien structurés. Il appose automatiquement des labels selon les performances des mots-clés sur 30 jours, ce qui vous permet de filtrer et d'agir rapidement sans fouiller dans des centaines de lignes. Les labels générés s'intègrent naturellement à votre change history script Google Ads et simplifient les audits réguliers.
function main() {
var mots_cles = AdsApp.keywords()
.withCondition("Status = ENABLED")
.forDateRange("LAST_30_DAYS")
.get();
while (mots_cles.hasNext()) {
var mc = mots_cles.next();
var stats = mc.getStatsFor("LAST_30_DAYS");
var conversions = stats.getConversions();
var cout_conv = conversions > 0 ? stats.getCost() / conversions : 0;
if (conversions >= 5 && cout_conv < 30) {
appliquerLabel(mc, "TOP_PERFORMER");
} else if (stats.getClicks() > 30 && conversions === 0) {
appliquerLabel(mc, "A_INVESTIGUER");
}
}
}
function appliquerLabel(mc, nomLabel) {
var labels = AdsApp.labels().withCondition("Name = '" + nomLabel + "'").get();
if (!labels.hasNext()) AdsApp.createLabel(nomLabel);
labels = AdsApp.labels().withCondition("Name = '" + nomLabel + "'").get();
if (labels.hasNext()) mc.applyLabel(labels.next().getName());
}
Fréquence recommandée : hebdomadaire.
Script 6 : détection des conflits de mots-clés négatifs
Un negative keyword conflict script Google Ads survient quand un mot-clé négatif au niveau campagne bloque un mot-clé positif actif dans un groupe d'annonces. Ce script repère ces conflits invisibles qui font disparaître des annonces sans aucun message d'erreur apparent.
function main() {
var campagnes = AdsApp.campaigns()
.withCondition("Status = ENABLED")
.get();
var conflits = [];
while (campagnes.hasNext()) {
var camp = campagnes.next();
var negatifs = camp.keywords().negatives().get();
var termes_negatifs = [];
while (negatifs.hasNext()) {
termes_negatifs.push(negatifs.next().getText().toLowerCase().replace(/[+\[\]"]/g, ""));
}
var positifs = AdsApp.keywords()
.withCondition("CampaignName = '" + camp.getName() + "'")
.withCondition("Status = ENABLED")
.get();
while (positifs.hasNext()) {
var kw = positifs.next();
var terme = kw.getText().toLowerCase().replace(/[+\[\]"]/g, "");
if (termes_negatifs.indexOf(terme) !== -1) {
conflits.push(camp.getName() + " : '" + terme + "' bloqué par négatif");
}
}
}
Logger.log("Conflits détectés : " + conflits.length);
if (conflits.length > 0) Logger.log(conflits.join("\n"));
}
Fréquence recommandée : après chaque ajout de mots-clés négatifs en masse. Ce script est particulièrement utile après l'import d'une liste de négatifs issue d'une analyse des termes de recherche déclencheurs.
Scripts pour compte MCC : gérer plusieurs clients en une exécution
Si vous pilotez plusieurs comptes via un MCC, les scripts au niveau MCC permettent d'itérer sur l'ensemble de vos comptes clients en une seule exécution grâce à MccApp à la place de AdsApp. L'exécution parallèle via executeInParallel() est limitée à 50 comptes simultanés selon les quotas Google : au-delà, filtrez vos comptes par labels MCC pour segmenter les exécutions.
var EMAIL_RAPPORT = "votre@email.com";
function main() {
MccApp.accounts().executeInParallel("traiterCompte", "finaliserRapport");
}
function traiterCompte() {
var stats = AdsApp.currentAccount().getStatsFor("TODAY");
return JSON.stringify({
nom: AdsApp.currentAccount().getName(),
depense: stats.getCost().toFixed(2)
});
}
function finaliserRapport(resultats) {
var lignes = resultats.map(function(r) {
var data = JSON.parse(r.getReturnValue());
return data.nom + " : " + data.depense + " €";
});
MailApp.sendEmail({
to: EMAIL_RAPPORT,
subject: "Rapport MCC du " + new Date().toLocaleDateString("fr-FR"),
body: lignes.join("\n")
});
}
Cette approche est indispensable pour les consultants qui gèrent des comptes de secteurs différents avec des logiques de budget distinctes : un seul script suffit pour générer un rapport consolidé ou appliquer une règle sur l'ensemble du portefeuille clients.
Débogage : les erreurs courantes et comment les corriger
La première cause d'échec est l'autorisation OAuth : Google demande votre consentement pour que le script accède à votre compte et envoie des emails via Gmail. Si vous refusez ou si l'autorisation expire, le script s'arrête silencieusement. Consultez systématiquement les logs d'exécution dans l'onglet « Historique » de l'éditeur de scripts : Google conserve les 30 dernières exécutions, avec les erreurs ligne par ligne.
Deuxième piège fréquent : les quotas API épuisés. Un script qui boucle sur des milliers de mots-clés tout en effectuant des appels UrlFetchApp.fetch() pour chaque URL peut atteindre la limite de 250 000 opérations par exécution. La solution est de paginer vos requêtes avec .withLimit() ou d'affiner les conditions .withCondition() pour réduire le périmètre traité. Pour un broken link checker script Google Ads sur un grand compte, filtrez par campagnes prioritaires et statut actif uniquement.
Troisième erreur fréquente sur les scripts MCC : oublier que executeInParallel() exige que les deux fonctions soient au niveau global du script et non imbriquées. Si la fonction de callback n'est pas trouvée, l'exécution échoue sans message d'erreur explicite. Vérifiez toujours que les noms de fonctions passés en paramètre correspondent exactement aux fonctions déclarées dans le code.
Scripts natifs vs règles automatisées Google : quand choisir quoi ?
Les règles automatisées de Google conviennent aux actions simples et récurrentes : mettre en pause une campagne si le CPA dépasse un seuil, augmenter le budget le week-end, envoyer une alerte si les impressions chutent. Elles ne nécessitent aucun code et sont accessibles depuis l'interface standard. Pour la majorité des annonceurs qui démarrent, elles couvrent 80% des besoins d'automatisation.
Les scripts s'imposent dès que vous avez besoin de logique conditionnelle croisée (plusieurs métriques simultanément), de traitement de données externes, d'exports personnalisés ou d'actions en cascade. Le labelizer, l'analyse n-gram, la détection de conflits négatifs, la gestion MCC : tout cela est impossible avec les règles automatisées. La question est simple : si votre règle ne peut pas s'exprimer en une seule condition, optez pour un script. Pour les non-développeurs, des plateformes comme Optmyzr proposent des scripts préconçus en interface no-code, ce qui permet d'en bénéficier sans écrire une ligne de JavaScript.
Utiliser l'IA pour générer ou modifier un script sans coder
ChatGPT, Claude ou Gemini peuvent générer des scripts Google Ads fonctionnels à partir d'une description en langage naturel. La méthode est simple : décrivez précisément ce que vous voulez, par exemple « écris un script Google Ads qui met en pause les annonces dont le CTR est inférieur à 1% sur les 14 derniers jours, si elles ont eu plus de 200 impressions ». L'IA produit un code de base que vous testez en mode aperçu avant d'activer.
Cette approche est particulièrement utile pour adapter un script existant sans toucher à la logique globale. Si le script d'alerte budget doit ignorer certaines campagnes branding, demandez simplement à l'IA d'ajouter une condition d'exclusion par nom ou par label. Elle connaît la syntaxe de l'API Google Ads Scripts et produit du code valide pour les cas standards. Pour les scripts complexes impliquant un MCC ou une gestion d'erreurs avancée, un regard humain reste nécessaire avant de lancer en production. Cette automatisation s'inscrit dans une logique de gestion de compte augmentée : l'automatisation libère du temps pour l'analyse stratégique plutôt que pour les tâches répétitives.
Erreurs fréquentes à éviter absolument
Lancer un script en production sans passer par le mode aperçu est la première erreur que commettent les annonceurs pressés. Le mode aperçu simule l'exécution complète et affiche exactement les actions qui auraient été effectuées, sans les appliquer. C'est votre filet de sécurité obligatoire, surtout pour un script de pause automatique ou d'ajustement d'enchères.
Ne pas filtrer sur le statut des éléments est la deuxième erreur classique. Un script qui boucle sur toutes les campagnes sans condition CampaignStatus = ENABLED gaspille des opérations sur des campagnes archivées et risque de modifier des éléments hors périmètre. Soyez toujours explicite sur les statuts dans chaque requête. Troisième erreur : ignorer les logs après activation. Google conserve l'historique des 30 dernières exécutions avec le détail des actions réalisées et des erreurs éventuelles. Consultez-les régulièrement, notamment après une restructuration de compte qui peut invalider les conditions filtrantes de vos scripts existants.
Questions fréquentes
Les scripts Google Ads sont-ils gratuits ?
Les scripts Google Ads sont entièrement gratuits : aucun abonnement, aucun frais supplémentaire au-delà de votre dépense publicitaire habituelle. Vous utilisez simplement l'API Google Ads Scripts incluse dans votre compte, accessible depuis l'onglet « Outils et paramètres » de l'interface standard.
Faut-il savoir coder pour utiliser les scripts Google Ads ?
Des bases en JavaScript sont utiles pour personnaliser les scripts, mais pas indispensables pour les scripts standards. Les scripts présentés dans cet article nécessitent uniquement de modifier quelques variables (email, seuils numériques) sans toucher à la logique. Pour des scripts sur mesure, un consultant ou un outil d'IA peut générer le code à votre place.
Un script peut-il endommager mon compte Google Ads ?
Un script mal configuré peut modifier des enchères ou mettre en pause des mots-clés de façon involontaire. Pour éviter tout incident, testez systématiquement en mode aperçu avant activation, et commencez par des scripts en lecture seule (rapports, alertes par email) avant de passer aux scripts qui modifient votre compte.
Peut-on utiliser les scripts Google Ads sur un compte MCC ?
Oui, les scripts MCC s'exécutent sur l'ensemble des comptes enfants en parallèle via MccApp.accounts().executeInParallel(). C'est l'approche privilégiée pour les consultants et agences qui gèrent plusieurs clients : un seul script suffit pour générer un rapport consolidé ou appliquer une règle sur tout le portefeuille, dans la limite de 50 comptes par exécution parallèle.
Quelle est la fréquence maximale d'exécution d'un script Google Ads ?
La fréquence maximale est toutes les heures. Pour les scripts d'alerte budget ou de dayparting, c'est la fréquence recommandée. Pour les audits Quality Score ou les rapports de performance, une exécution quotidienne ou hebdomadaire est suffisante et préserve vos quotas API sur la durée.
Si vous souhaitez un regard expert sur vos campagnes et une automatisation adaptée à votre secteur et à votre budget, un échange de 30 minutes permet d'identifier rapidement les scripts à fort impact sur votre compte spécifique. L'accompagnement est intégralement à distance, partout en France et en Europe francophone.