PMax N-Gram Lens ist der Performance-Max-Spezialist der Suite. Es liest die echten Suchbegriffe von PMax-Kampagnen — inklusive Kosten — aus campaign_search_term_view, zerlegt sie in N-Gramme, trennt Brand- von Generic-Traffic und reiht Negativkandidaten, die du als Phrase-Negative auf Kampagnenebene einfügen kannst.

So funktioniert es

Aktive (optional auch pausierte) PMax-Kampagnen mit Impressionen im Fenster werden ausgewählt. Begriffe werden in Blöcken von 200 Kampagnen mit Impressionen, Klicks, Kosten, Conversions und Wert abgefragt; diese Ansicht hat keine Keyword-Segmente, also wird nichts vermischt. Negative werden auf Kampagnenebene, in angehängten geteilten Listen (per ID) und auf Kontoebene geprüft. Ist brand_terms gesetzt, wird jeder Begriff als Brand oder Generic klassifiziert und der Klickanteil berichtet. Die optionale Kategorie-Zusammenfassung aus campaign_search_term_insight (include_categories) schreibt nur Kategoriesummen und wird nie mit Begriffszeilen zusammengeführt, da sie eine zusätzliche Abfrage pro Kampagne braucht. Negativkandidaten werden nach verschwendeten Klicks, Conversion-Raten-Verhältnis und CPA-Vielfachem gereiht.

Was in das Sheet geschrieben wird

  • Summary — PMax-Kampagnen im Umfang, analysierte und durch Negative ausgeschlossene eindeutige (Kampagne, Begriff)-Zeilen, N-Gramm-Größen, Summen, Brand/Generic-Klickanteil, Anzahl Negativkandidaten, Kosten auf Negativkandidaten, Hinweise und ⚠-Warnungen.
  • Account n-grams, Campaign n-grams — Phrasenmetriken kontoweit und je Kampagne.
  • Categories — 8-spaltige Kategoriesummen, nur bei include_categories = true.
  • Brand split — Metriken der Segmente Brand und Generic.
  • Suggestions — Negativkandidaten mit Kampagne, „Paste as“, geschätzten verschwendeten Klicks und „Why“.
  • Terms — rohe (Kampagne, Begriff)-Zeilen mit Spalte „Blocked by negative“, wenn write_raw_terms = true.

Einrichtung

  1. Lege mit dem Google-Konto, mit dem du das Skript autorisierst, ein neues, leeres Google Sheet an und kopiere die URL. Verwende kein Sheet eines anderen Skripts — jedes Sheet ist an ein Skript und ein Google Ads-Konto gebunden.
  2. Öffne in Google Ads Tools → Skripts, lege ein neues Skript an, füge den gesamten Code ein und vergib einen Namen.
  3. Trage die Sheet-URL in CONFIG.spreadsheet_url ein. Läuft das Skript aus einem Verwaltungskonto (MCC), setze zusätzlich CONFIG.account_id auf die Kunden-ID (z. B. 123-456-7890); ohne diese Angabe bricht das Skript mit einer klaren Fehlermeldung ab.
  4. Optional: CONFIG.email (Empfänger durch Komma getrennt) und/oder CONFIG.slack_webhook befüllen. Der Webhook bleibt ausschließlich im Code und wird nie in das Sheet geschrieben.
  5. Skript autorisieren, einmal Vorschau ausführen und das Protokoll prüfen, dann Ausführen. Der erste Lauf erstellt die Tabs, die Kopfzeilen und den Tab _settings.
  6. Zeitplan einrichten: wöchentlich, montags ab 04:00 Uhr Kontozeit.
  7. Optional: das Excel-Dashboard herunterladen (Button oben), den Tab Read me öffnen und die Sheet-Tabs wie dort beschrieben einfügen — das Spaltenlayout entspricht der Skriptausgabe eins zu eins.

Parameter

ParameterBeschreibungStandard
spreadsheet_urlURL des leeren Google Sheets, in das das Skript schreibt.'YOUR_SPREADSHEET_URL'
account_idKunden-ID; nur nötig, wenn das Skript aus einem Verwaltungskonto (MCC) läuft.''
daysLänge des Analysefensters in Tagen.30
min_ngram / max_ngramKleinste und größte N-Gramm-Größe (1 = Einzelwörter, 3 = Dreiwort-Phrasen).1 / 3
campaign_containsNur Kampagnen, deren Name diesen Text enthält.''
campaign_not_containsKampagnen ausschließen, deren Name diesen Text enthält.''
enabled_campaigns_onlytrue = nur aktive Kampagnen; false = aktive und pausierte.true
min_query_impressionsMindestimpressionen, damit ein Suchbegriff gelesen wird.1
check_negativesSuchbegriffe mit vorhandenen Negativen abgleichen (Anzeigengruppe, Kampagne, geteilte Liste, Kontoebene).true
brand_termsBrand-Wörter oder -Phrasen; leer = Brand-Split deaktiviert.[]
languageSprache des Tokenizers; standardmäßig die Build-Sprache (en / tr / de).L.text_lang
stopwordsZusätzliche Wörter, die beim N-Gramm-Aufbau ignoriert werden.[]
include_categoriesKategorie-Zusammenfassung aus campaign_search_term_insight; eine zusätzliche Abfrage pro Kampagne, kann bei großen Konten RESOURCE_EXHAUSTED auslösen.false
write_raw_termsDen Tab Terms mit Rohzeilen schreiben.true
max_rows_writtenZeilenlimit pro Tabelle; bei Überschreitung wird ein Hinweis ergänzt.20000
thresholdsMindestanzahl Suchanfragen / Impressionen / Klicks / Kosten, damit ein N-Gramm gelistet wird.1 / 20 / 0 / 0
suggestionsnegative_min_clicks, negative_max_cr_ratio, negative_max_cpa_multiple, list_size.20 / 0.25 / 3 / 100
Alle Werte stehen im CONFIG-Block am Anfang des Skripts; Schlüssel, die auch im Tab _settings existieren, lassen sich dort ändern.

Der Tab _settings

Beim ersten Lauf legt das Skript einen Tab _settings (Key / Value / Notes) an. Werte dort überschreiben die passenden CONFIG-Einträge, sodass das tägliche Feintuning im Sheet stattfindet, ohne Code zu ändern. Zahlen müssen ohne Tausendertrennzeichen und mit höchstens zwei Dezimalstellen geschrieben werden (0.5 oder 0,5). Die Zeilen script und account markieren den Besitzer des Sheets: Öffnet ein anderes Skript oder ein anderes Konto dasselbe Sheet, stoppt es, bevor etwas geschrieben wird. Interne Tabs mit Unterstrich (_settings, _history, _snapshot, _state, _baseline) sind sprachunabhängig; ein Wechsel zwischen den EN/TR/DE-Builds behält den gespeicherten Zustand.

Benachrichtigungen

Dieses Skript hat keine E-Mail- oder Slack-Option; Ausgabe sind das Sheet und das Dashboard.

Hinweise und Grenzen

  • Negative werden nie automatisch angewendet — den Tab Suggestions prüfen, dann als Phrase-Negative in der Kampagne ergänzen.
  • Schlägt die Begriffsabfrage fehl oder erreicht sie das Leselimit, zeigt Summary eine ⚠-Zeile, statt stillschweigend weniger Daten zu liefern.
  • Jeder Berichts-Tab enthält eine kleine Attributionszelle (H1:K1, nur Warnschutz) und der Code-Header eine Copyright-Zeile; beides kann jeder entfernen, der die Quelle bearbeitet.