SteerAds
Microsoft AdsTutorielOptimisation

Skripty Microsoft Ads: 8 automatizací připravených

Microsoft Ads Scripts umožňují automatizovat to, co rozhraní nenabízí: upozornění na rozpočet, automatické negativy, anomálie CPC, týdenní reporting. Zde je 8 skriptů připravených ke zkopírování, otestovaných v produkci na účtech sledovaných ve veřejných benchmarcích Google Ads — s kompletními JavaScript snippety, proměnnými k přizpůsobení a úskalími, kterým se vyhnout.

Matt
MattTracking & Data Lead
···10 min čtení

Na účtech sledovaných ve veřejných benchmarcích Google Ads automatizace prostřednictvím Microsoft Ads Scripts šetří 4 až 8 hodin manuální práce týdně (kontroly rozpočtu, přidávání negativů, monitoring trackingu) — tedy ekvivalent půl dne PPC manažera získaného zpět pro strategii. Microsoft Advertising drží 9 % desktopového vyhledávání v USA a 4 % ve Francii ve Q4 2025 (StatCounter); při takovém podílu trhu automatizace již není volitelná.

Tento průvodce je repozitář připravený ke zkopírování: 8 JavaScript skriptů otestovaných v produkci, s proměnnými k přizpůsobení, úskalími, kterým se vyhnout, a doporučenou frekvencí provádění pro každý. Všechny nesou jasnou obchodní logiku — žádný dekorativní kód. Pokud s Microsoft Ads začínáte, přečtěte si nejprve náš průvodce pro začátečníky Microsoft Ads a náš srovnání Microsoft Ads vs Google Ads. Náš kalkulátor plýtvání rozpočtem odhaduje € spálené za měsíc broad výrazy bez negativů nebo nadměrným bounce rate LP.

Microsoft Ads Scripts v roce 2026: co se mění oproti Google Ads Scripts

Microsoft Ads Scripts (někdy nazývané Microsoft Advertising Scripts) jsou přímým ekvivalentem Google Ads Scripts: bezserverové JavaScript prostředí integrované do rozhraní Microsoft Advertising, které umožňuje spouštět kód v pravidelných intervalech (hourly, daily, weekly) pro čtení nebo úpravu entit účtu. Syntaxe je JavaScript ES5 s některými funkcemi ES6 podporovanými od roku 2024 (let, const, arrow functions, template strings).

API se liší od Google Ads Scripts. Kde Google zpřístupňuje AdsApp.campaigns(), Microsoft zpřístupňuje ekvivalentní selektor, ale s proprietárními metodami. Zde je srovnávací tabulka hlavních rozdílů:

Tři praktické rozdíly, které je třeba znát před portováním Google skriptu:

  1. Žádný nativní SpreadsheetApp na straně Microsoft. Pokud jste zvyklí logovat výstupy do Google Sheets, budete muset použít Google Sheets API přes UrlFetchApp + OAuth token. To je více instalatérských prací pro stejný výsledek.
  2. Formát data na straně reportů se mírně liší. Microsoft přijímá formáty ISO (YYYY-MM-DD), ale některé metody očekávají nativní JS objekty Date. Systematicky testujte v preview.
  3. Systém odesílání emailů prochází přes UrlFetchApp + externí službu (SendGrid, Mailgun nebo vlastní endpoint). Microsoft nenabízí vestavěný MailApp ekvivalentní Google Ads Scripts.

Kompletní oficiální dokumentace na learn.microsoft.com/advertising/scripts. To je go-to pro jakékoli otázky týkající se signatury API nebo nejasných metod.

Nastavení: kam vložit skript a jak ho naplánovat

Editor Scripts je přístupný v Microsoft Advertising přes Tools > Scripts. Postup vytvoření nového skriptu se vejde do 5 kroků: vytvořit skript, vložit kód, přizpůsobit proměnné, otestovat v preview, naplánovat na správnou frekvenci.

Režim Preview je nezbytný. Spustí skript pouze pro čtení, bez úpravy entit, a zobrazí kompletní log v dolním panelu editoru. To je vaše záchranná síť: špatně napsaný skript, který pozastaví 5 000 klíčových slov, může zablokovat účet na týdny. Vždy preview před prvním naplánovaným spuštěním.

Dostupné frekvence provádění:

  • Hourly: každou hodinu (24krát denně). Pro kritická upozornění nebo vysoce frekventované automatizace (upozornění na rozpočet, monitoring trackingu).
  • Daily: jednou denně ve zvolenou hodinu. Pro většinu automatizací (automatické negativy, monitoring CPC, pozastavení klíčových slov).
  • Weekly: jednou týdně. Pro reportingy, analýzy trendů, náročné operace.
  • Monthly: jednou měsíčně. Pro strukturální audity, úklidy.

Na účtech sledovaných ve veřejných benchmarcích Google Ads dominuje následující vzor: 1–2 skripty hourly (kritické upozornění na rozpočet, monitoring trackingu), 4–6 skriptů daily (negativy, pozastavení klíčových slov, anomálie), 1–2 skripty weekly (reporting, audit). Kumulování více než 12 aktivních skriptů začíná vytvářet konflikty — dva skripty upravující stejnou entitu ve stejnou dobu generují nepředvídatelné chování.

Externí HTTP autorizace: pokud váš skript používá UrlFetchApp pro odesílání emailu, push na Slack, čtení Google Sheet, Microsoft při prvním použití vyžaduje explicitní autorizaci. Okno souhlasu uvádí domény, ke kterým má skript přístup. Tuto autorizaci lze kdykoli odvolat v Tools > Scripts > Authorizations.

Tip pro vývojáře :

Vždy umístěte Logger.log() (nebo ekvivalent Microsoft) na začátek a konec každé kritické sekce. Skripty, které selhávají tiše, jsou peklo ladit 3 měsíce poté, co výkon klesne. Mezní náklady na log jsou nulové, provozní přínos je obrovský.

Skript 1: upozornění na překročení rozpočtu

Funkce: odeslat emailové upozornění (nebo Slack, nebo webhook), jakmile kampaň spotřebuje více než 90 % svého denního rozpočtu v průběhu dne. Kritické během výprodejů, sezónních špiček nebo účtů s nízkým rozpočtem.

Doporučená frekvence: Hourly.

// Microsoft Ads Script — Budget Alert Hourly
// Variables à customiser
var BUDGET_THRESHOLD_PCT = 0.90; // 90% du budget journalier
var ALERT_WEBHOOK_URL = "https://hooks.slack.com/services/YOUR/WEBHOOK/URL";
var ACCOUNT_NAME = "Compte FR principal";

function main() {
  var campaigns = AdsApp.campaigns()
    .withCondition("Status = ENABLED")
    .get();

  var alerts = [];

  while (campaigns.hasNext()) {
    var c = campaigns.next();
    var stats = c.getStatsFor("TODAY");
    var spent = stats.getCost();
    var budget = c.getBudget().getAmount();

    if (budget > 0 && spent / budget >= BUDGET_THRESHOLD_PCT) {
      alerts.push({
        name: c.getName(),
        spent: spent.toFixed(2),
        budget: budget.toFixed(2),
        pct: ((spent / budget) * 100).toFixed(1)
      });
    }
  }

  if (alerts.length > 0) {
    var message = "[" + ACCOUNT_NAME + "] " + alerts.length +
      " campagne(s) > " + (BUDGET_THRESHOLD_PCT * 100) + "% budget : " +
      alerts.map(function(a) {
        return a.name + " (" + a.pct + "% — " + a.spent + "/" + a.budget + " EUR)";
      }).join(" | ");

    UrlFetchApp.fetch(ALERT_WEBHOOK_URL, {
      method: "POST",
      contentType: "application/json",
      payload: JSON.stringify({ text: message })
    });
  }
}

Proměnné k přizpůsobení: BUDGET_THRESHOLD_PCT (0,90 = 90 %), ALERT_WEBHOOK_URL (Slack, Discord, vlastní webhook), ACCOUNT_NAME (užitečné, pokud více účtů odesílá na stejný kanál).

Úskalí, kterým se vyhnout:

  • Nikdy nespouštějte tento skript s frekvencí Daily: o půlnoci se čítač resetuje a všechny kampaně zobrazují 0 % — upozornění je k ničemu.
  • Pokud máte sdílený rozpočet (Shared budget), c.getBudget().getAmount() vrátí sdílený rozpočet, ne rozpočet alokovaný kampani — upravte skript pro iteraci přes Shared budgets v případě potřeby.

Skript 2: automatické negativy ze search query reportu

Funkce: analyzovat Search Query Report (SQR) za posledních 30 dní, identifikovat dotazy, které spotřebovávají rozpočet bez konverzí, a automaticky je přidat jako negativy na úrovni kampaně. Nejvýnosnější páka automatizace Microsoft Ads.

Doporučená frekvence: Daily.

// Microsoft Ads Script — Auto Negatives from SQR
// Variables à customiser
var MIN_CLICKS_THRESHOLD = 15; // au moins 15 clics
var MAX_CONVERSIONS_THRESHOLD = 0; // aucune conversion
var DATE_RANGE_DAYS = 30; // fenêtre d'analyse
var DRY_RUN = true; // false pour appliquer réellement

function main() {
  var query =
    "SELECT Query, CampaignName, CampaignId, Clicks, Cost, Conversions " +
    "FROM SEARCH_QUERY_PERFORMANCE_REPORT " +
    "WHERE Clicks >= " + MIN_CLICKS_THRESHOLD +
    "  AND Conversions <= " + MAX_CONVERSIONS_THRESHOLD +
    "  AND CampaignStatus = 'ENABLED' " +
    "DURING LAST_" + DATE_RANGE_DAYS + "_DAYS";

  var report = AdsApp.report(query);
  var rows = report.rows();
  var added = 0;

  while (rows.hasNext()) {
    var row = rows.next();
    var queryText = row["Query"];
    var campaignName = row["CampaignName"];
    var campaignId = row["CampaignId"];

    if (DRY_RUN) {
      Logger.log("[DRY RUN] Would add negative: '" + queryText +
        "' to campaign " + campaignName);
      continue;
    }

    var campaigns = AdsApp.campaigns()
      .withCondition("CampaignId = " + campaignId).get();

    if (campaigns.hasNext()) {
      var campaign = campaigns.next();
      campaign.createNegativeKeyword('"' + queryText + '"'); // phrase match
      added++;
      Logger.log("Added negative: '" + queryText + "' to " + campaignName);
    }
  }

  Logger.log("Total negatives added: " + added);
}

Proměnné k přizpůsobení:

  • MIN_CLICKS_THRESHOLD: minimum kliků před přidáním jako negativum (15 = optimální bod, upravte podle objemu).
  • MAX_CONVERSIONS_THRESHOLD: 0 = žádná konverze. Pokud chcete tolerovat 1 izolovanou konverzi, nastavte na 1.
  • DATE_RANGE_DAYS: 30 = standardní okno. Pro účet s nízkým objemem rozšiřte na 60 nebo 90.
  • DRY_RUN: nechte true pro první spuštění, zkontrolujte log, poté přepněte na false.

Úskalí, kterým se vyhnout:

  • Vždy DRY_RUN: true při prvním spuštění. Přečtěte log a ověřte, že navrhované negativy dávají smysl. Špatně kalibrovaný práh může za noc přidat 200 negativů.
  • Typ shody: zde phrase match (s uvozovkami). Pro exact match použijte '[' + queryText + ']'. Pro broad bez ohraničení.
  • Skript přidává na úrovni kampaně. Pro přidání na úrovni účtu (preferované pro ultra-generické negativy) použijte sdílený seznam negativních klíčových slov.

Skript 3: pozastavení klíčových slov s nízkým quality score

Funkce: identifikovat klíčová slova s Quality Score (Microsoft) nižším než je prahová hodnota a automaticky je po období sledování pozastavit. Umožňuje čištění účtu bez manuálního zásahu.

Doporučená frekvence: Daily.

// Microsoft Ads Script — Pause Low Quality Score Keywords
// Variables à customiser
var QS_THRESHOLD = 4; // pause si QS < 4 (sur 10)
var MIN_IMPRESSIONS = 500; // minimum d'impressions pour valider
var DATE_RANGE = "LAST_30_DAYS";

function main() {
  var keywords = AdsApp.keywords()
    .withCondition("Status = ENABLED")
    .withCondition("QualityScore < " + QS_THRESHOLD)
    .withCondition("Impressions > " + MIN_IMPRESSIONS)
    .forDateRange(DATE_RANGE)
    .get();

  var paused = 0;

  while (keywords.hasNext()) {
    var k = keywords.next();
    var qs = k.getQualityScore();
    var impressions = k.getStatsFor(DATE_RANGE).getImpressions();
    var keywordText = k.getText();
    var campaign = k.getCampaign().getName();

    Logger.log("Pausing: '" + keywordText + "' (QS=" + qs +
      ", Impr=" + impressions + ", Campaign=" + campaign + ")");

    k.pause();
    paused++;
  }

  Logger.log("Total keywords paused: " + paused);
}

Proměnné k přizpůsobení:

  • QS_THRESHOLD: 4 = přísné. Pro začátek nastavte 3 a postupně zvyšujte na 4–5 podle výsledků.
  • MIN_IMPRESSIONS: minimum 500 pro spolehlivý QS (jinak Microsoft vrací nestabilní QS).

Úskalí, kterým se vyhnout:

  • Nikdy nespouštějte tento skript na brand klíčových slovech: brand klíčové slovo může mít nízký QS kvůli faktoru LP nesouvisejícímu s relevancí (např. LP, který se načítá špatně, ale klíčová slova jsou velmi relevantní). Filtrujte brand kampaně předem.
  • QS je ukazatel Microsoft, ne Google. Na Microsoft se QS může měnit rychleji (jednodušší algoritmus) — klíčové slovo pozastavené jeden den může být výkonné znovu o 2 týdny později. Považujte tento skript za čištění, ne za definitivní rozhodnutí.

Skript 4: týdenní emailový reporting

Funkce: generovat každé pondělí ráno souhrnný report s klíčovými KPI (kliknutí, zobrazení, konverze, CPA, ROAS) podle kampaně a odeslat ho emailem týmu. Zabraňuje nutnosti manuálního přihlašování pro získání čísel.

Doporučená frekvence: Weekly (pondělí ráno).

// Microsoft Ads Script — Weekly Report Email
// Variables à customiser
var EMAIL_RECIPIENT = "team@votreentreprise.com";
var EMAIL_API_URL = "https://api.sendgrid.com/v3/mail/send"; // ou Mailgun, etc.
var EMAIL_API_KEY = "YOUR_SENDGRID_API_KEY";
var DATE_RANGE = "LAST_7_DAYS";

function main() {
  var campaigns = AdsApp.campaigns()
    .withCondition("Status = ENABLED")
    .get();

  var rows = [];

  while (campaigns.hasNext()) {
    var c = campaigns.next();
    var stats = c.getStatsFor(DATE_RANGE);
    rows.push({
      name: c.getName(),
      impressions: stats.getImpressions(),
      clicks: stats.getClicks(),
      cost: stats.getCost(),
      conv: stats.getConversions(),
      cpa: stats.getConversions() > 0
        ? (stats.getCost() / stats.getConversions()).toFixed(2)
        : "N/A"
    });
  }

  // Construction HTML
  var html = "<h2 data-speakable>Weekly Microsoft Ads Report — " + DATE_RANGE + "</h2>";
  html += "<table border='1' cellpadding='8' style='border-collapse:collapse;'>";
  html += "<tr><th>Campaign</th><th>Impr.</th><th>Clicks</th>" +
    "<th>Cost</th><th>Conv.</th><th>CPA</th></tr>";
  rows.forEach(function(r) {
    html += "<tr><td>" + r.name + "</td>" +
      "<td>" + r.impressions + "</td>" +
      "<td>" + r.clicks + "</td>" +
      "<td>" + r.cost.toFixed(2) + "</td>" +
      "<td>" + r.conv + "</td>" +
      "<td>" + r.cpa + "</td></tr>";
  });
  html += "</table>";

  // Envoi via SendGrid (ou autre provider)
  UrlFetchApp.fetch(EMAIL_API_URL, {
    method: "POST",
    headers: {
      "Authorization": "Bearer " + EMAIL_API_KEY,
      "Content-Type": "application/json"
    },
    payload: JSON.stringify({
      personalizations: [{ to: [{ email: EMAIL_RECIPIENT }] }],
      from: { email: "noreply@votreentreprise.com" },
      subject: "Weekly Microsoft Ads Report",
      content: [{ type: "text/html", value: html }]
    })
  });
}

Proměnné k přizpůsobení: EMAIL_RECIPIENT, EMAIL_API_URL a EMAIL_API_KEY (SendGrid nebo Mailgun nebo ekvivalent), DATE_RANGE.

Úskalí, kterým se vyhnout:

  • API klíč emailu je citlivý: nikdy ho hardcodujte v čistém textu ve sdíleném skriptu. Použijte správce tajemství nebo dedikovaný proxy endpoint.
  • Jednoduchý HTML formát: pro vizuálnější report integrujte inline CSS nebo generujte PDF přes třetí stranu API (PDFShift, DocRaptor).

Skripty 5 až 8: dynamické nabídky, anomálie, publika, monitoring Náš bezplatný kalkulátor CPC Francie poskytuje benchmarky podle sektoru a doporučenou cílovou zónu.

Zbývající 4 skripty pokrývají pokročilé případy použití: úpravy nabídek podle časových úseků, detekce anomálií CPC, obnovení publik Customer Match a monitoring konverzí UET.

Skript 5 — Dynamické nabídky podle časových úseků (dayparting)

Funkce: automaticky upravovat nabídky podle časových úseků na základě sledovaných konverzních vzorců. Užitečné pro SaaS B2B (špička přes den, útlum večer/víkend) nebo e-commerce se silnou sezónností den/noc.

Doporučená frekvence: Daily (o půlnoci, použije úpravu nabídky na následující den).

Skript čte report výkonu podle hour-of-day za posledních 30 dní, vypočítá koeficient úpravy nabídky podle časového úseku (na základě míry konverze), poté ho aplikuje přes setBidModifier() na úrovni kampaně. Neaplikujte na kampaně v Smart Bidding (Target CPA/ROAS), pouze na Manual CPC nebo Maximize Clicks.

Skript 6 — Detekce anomálií CPC

Funkce: porovnat průměrný aktuální CPC za posledních 7 dní s průměrným CPC za posledních 30 dní podle kampaně. Upozornit, pokud odchylka přesáhne +25 %. Detekuje unikající konkurenční nabídky (agresivní konkurent, nepředvídaná sezónnost, tržní událost).

Doporučená frekvence: Daily.

// Microsoft Ads Script — CPC Anomaly Detection
var CPC_VARIATION_THRESHOLD = 0.25; // +25% = alerte
var ALERT_WEBHOOK_URL = "https://hooks.slack.com/services/YOUR/WEBHOOK";

function main() {
  var campaigns = AdsApp.campaigns()
    .withCondition("Status = ENABLED").get();

  var alerts = [];

  while (campaigns.hasNext()) {
    var c = campaigns.next();
    var s7 = c.getStatsFor("LAST_7_DAYS");
    var s30 = c.getStatsFor("LAST_30_DAYS");

    if (s7.getClicks() < 50 || s30.getClicks() < 200) continue; // skip low volume

    var cpc7 = s7.getCost() / s7.getClicks();
    var cpc30 = s30.getCost() / s30.getClicks();
    var variation = (cpc7 - cpc30) / cpc30;

    if (variation > CPC_VARIATION_THRESHOLD) {
      alerts.push(c.getName() + " : CPC +" + (variation * 100).toFixed(1) +
        "% (" + cpc30.toFixed(2) + " → " + cpc7.toFixed(2) + " EUR)");
    }
  }

  if (alerts.length > 0) {
    UrlFetchApp.fetch(ALERT_WEBHOOK_URL, {
      method: "POST",
      contentType: "application/json",
      payload: JSON.stringify({
        text: "[Microsoft Ads] CPC anomalies detected: " + alerts.join(" | ")
      })
    });
  }
}

Skript 7 — Obnovení publik Customer Match

Funkce: načíst nejaktuálnější CRM seznam (přes CRM API nebo Google Sheet), hashovat ho SHA-256 a aktualizovat seznam Customer Match na straně Microsoft Advertising. Zabraňuje zastaralým seznamům, které degradují matching.

Doporučená frekvence: Weekly.

Skript používá UrlFetchApp pro volání CRM API (HubSpot, Salesforce, vlastní), parsuje odpověď, hashuje každý email/telefon a poté pushuje do Microsoft Audiences API. Viz náš průvodce Customer Match first-party data 2026 pro kompletní strategii publik.

Skript 8 — Monitoring konverzí UET

Funkce: každou hodinu ověřovat, že tag UET nadále zaznamenává konverze. Upozornit, pokud za posledních 6 hodin nebyla zaznamenána žádná konverze, přestože je účet aktivní. Detekuje výpadky trackingu za méně než 6 hodin (vs. 24–48 hodin při manuálním monitoringu).

Doporučená frekvence: Hourly.

// Microsoft Ads Script — UET Conversion Monitoring
var ALERT_THRESHOLD_HOURS = 6;
var MIN_HOURLY_CLICKS = 20; // alerte uniquement si trafic significatif
var ALERT_WEBHOOK_URL = "https://hooks.slack.com/services/YOUR/WEBHOOK";

function main() {
  var stats = AdsApp.currentAccount().getStatsFor("TODAY");
  var conv = stats.getConversions();
  var clicks = stats.getClicks();

  if (clicks < MIN_HOURLY_CLICKS * ALERT_THRESHOLD_HOURS) return; // pas assez de trafic

  if (conv === 0) {
    UrlFetchApp.fetch(ALERT_WEBHOOK_URL, {
      method: "POST",
      contentType: "application/json",
      payload: JSON.stringify({
        text: "[Microsoft Ads] ALERTE : 0 conversion sur les " +
          ALERT_THRESHOLD_HOURS + " dernières heures avec " +
          clicks + " clicks. Vérifier le tag UET."
      })
    });
  }
}

Proměnné k přizpůsobení: ALERT_THRESHOLD_HOURS, MIN_HOURLY_CLICKS (upravte podle objemu účtu), ALERT_WEBHOOK_URL.

Úskalí, kterým se vyhnout:

  • Skript musí odpovídat profilu provozu účtu. Pro B2B s malým počtem konverzí denně snižte MIN_HOURLY_CLICKS na 5–10; pro e-commerce s vysokým objemem zvyšte na 50.
  • Falešně pozitivní výsledky jsou možné o víkendu nebo v noci, pokud účet běží 24/7, ale konverze jsou soustředěny v pracovní době. Filtrujte pracovní hodiny, pokud je to relevantní.
Klíčový poznatek :

Na účtech sledovaných ve veřejných benchmarcích Google Ads ušetří účty, které aktivují alespoň 4 z těchto 8 skriptů, 4 až 8 hodin manuální práce týdně a detekují anomálie (tracking, rozpočet, CPC) 2 až 4krát rychleji. To je nejvýnosnější páka industrializace jakmile je účet stabilizovaný na základech.

Pro pokračování v automatizaci na straně Google Ads (10 skriptů připravených ke zkopírování, syntaxe AdsApp) viz náš průvodce 10 Google Ads skripty připravenými ke zkopírování. Pro základní audit, který musí předcházet jakékoli automatizaci, si přečtěte náš checklist auditu Google Ads.

Pro účty, které chtějí industrializovat řízení Microsoft Ads bez psaní vlastních skriptů, náš modul Auto-optimalizace pokrývá ekvivalent 8 výše uvedených skriptů v řízeném režimu: kontinuální monitoring, Slack/email upozornění, denní úpravy negativů a nabídek, týdenní reporting. Viz také náš kompletní průvodce UET conversion tracking, náš průvodce importem Google → Microsoft a naši analýzu rozpočtu a CPC Microsoft Ads celosvětově pro benchmarky podle vertikály.

Pro oficiální dokumentaci Microsoft viz portál Microsoft Advertising Scripts a obecné help centrum Microsoft Ads.

Zdroje

Oficiální zdroje použité v tomto průvodci:

FAQ

Používají Microsoft Ads Scripts JavaScript stejně jako Google Ads Scripts?

Ano, syntaxe je JavaScript ES5 (s některými funkcemi ES6 podporovanými od roku 2024) — blízký Google Ads Scripts, ale s odlišným API. Dostupné objekty se liší: AdsApp na straně Google je nahrazen něčím jako MicrosoftAdsApp (někdy vystavený přes globální objekt prostředí Microsoft). Metody (getCampaigns, getAdGroups, getKeywords) mají podobné, ale ne identické signatury. Prakticky vzato, Google Ads skript nelze spustit přímo na straně Microsoft: je nutné ho portovat přemapováním volání API a testováním každého tvrzení. Počítejte s 30 minutami až 2 hodinami na čisté portování podle složitosti.

Kolik skriptů může být na účtu Microsoft Ads spuštěno současně?

Microsoft Advertising povoluje až 50 skriptů na účet podle oficiální dokumentace, s limitem provádění 30 minut na skript a denní kvótou operací API. Na účtech sledovaných ve veřejných benchmarcích Google Ads představuje 6 až 12 aktivních skriptů optimální nastavení — nad tuto hranici roste riziko konfliktů (dva skripty upravující stejnou entitu současně) a ladění se stává složitým. Praktické pravidlo: 1 skript = 1 jasná obchodní funkce, lepších je 8 jednoduchých skriptů než jeden super-skript o 500 řádcích, který dělá vše. Microsoft zaznamenává každé spuštění s časovými razítky a chybami, přístupnými v Tools > Scripts.

Je pro Microsoft Ads Scripts potřeba speciální OAuth autorizace?

Ne, skripty se spouštějí v kontextu účtu Microsoft Advertising, ke kterému jsou přiřazeny, s oprávněními účtu. Není potřeba samostatné OAuth pro úpravu entit účtu (kampaně, klíčová slova, negativy). Pokud však skript provádí externí HTTP volání (odesílání emailu, čtení externího API, push na Slack), používá UrlFetchApp se standardními omezeními: timeout 30 s, omezená velikost payloadu, povinné platné SSL certifikáty. Pro volání vyžadující autentizaci (Slack webhook, Google Sheets API) předávejte token přímo v URL nebo v headers UrlFetchApp.fetch.

Jakou frekvenci provádění zvolit: hourly, daily, weekly?

Závisí na kritičnosti skriptu. Hourly pro kritická upozornění na rozpočet (kampaň, která může překročit rozpočet během několika hodin při výprodeji), Daily pro většinu (automatické negativy, monitoring CPC, anomálie), Weekly pro reportingy a analýzy trendů. Na účtech sledovaných ve veřejných benchmarcích Google Ads dominuje následující vzor: 1–2 skripty hourly (upozornění na rozpočet, monitoring trackingu), 4–6 skriptů daily (negativy, pozastavení klíčových slov, anomálie), 1–2 skripty weekly (reporting, audit). Vyhněte se přílišné frekvenci: skript, který upravuje nabídky každou hodinu, může poškodit Smart Bidding, který potřebuje stabilitu.

Mohou skripty upravovat entity spravované Smart Biddingem?

Technicky ano, funkčně je to třeba se vyvarovat. Úprava max. CPC klíčového slova v kampani Target ROAS desynchronizuje Smart Bidding, který přejde do learning state na 7 až 14 dní. Praktické pravidlo: skripty mají dotýkat strukturálních entit (negativy, stav klíčových slov, ad copy, publika), ale Smart Bidding má spravovat nabídky. Pokud chcete automatizovat úpravy nabídek, dělejte to na KAMPANÍCH v Manual CPC nebo Maximize Clicks — ne na těch v Target CPA/ROAS. Oficiální dokumentace Microsoft Scripts API na learn.microsoft.com pokrývá osvědčené postupy.

Ready to optimize your campaigns?

Start a free audit in 2 minutes and discover the ROI potential of your accounts.

Start my free audit

Free audit — no credit card required

Keep reading