Quality Lens erfasst den Qualitätsfaktor jedes Keywords einmal täglich samt seiner drei Komponenten und zeigt, was sich seit dem letzten Lauf geändert hat. Weil Google nur den heutigen Wert anzeigt, ist der von diesem Skript aufgebaute Verlauf der einzige Weg, Trends zu sehen — und die Keywords mit niedriger Qualität zu finden, die wirklich Geld kosten.

So funktioniert es

Keywords (nur aktive oder aktive und pausierte) werden mit quality_info.quality_score, erwarteter CTR, Anzeigenrelevanz und Landingpage-Erfahrung sowie Impressionen und Kosten der letzten days Tage gelesen. Der vorherige Snapshot kommt aus _snapshot; jedes Keyword, dessen Wert sich um mindestens change_threshold bewegt hat, landet mit altem und neuem Wert im Tab Changes. Ein impressionsgewichteter und ein einfacher Durchschnitts-QS, die Kosten auf QS ≤ 4 und deren Anteil werden berechnet; die 25 teuersten Keywords mit niedriger Qualität werden gelistet. Pro Tag wird eine Verlaufszeile aktualisiert, ein erneuter Lauf am selben Tag erzeugt kein Duplikat.

Was in das Sheet geschrieben wird

  • Summary — Metrikfenster, Keywords mit QS, impressionsgewichteter und einfacher Durchschnitts-QS, Kosten und Anteil auf QS ≤ 4, Anzahl Änderungen, Verteilung nach QS, schwächste Komponente und die teuersten Keywords mit niedriger Qualität.
  • Keywords — eine Zeile pro Keyword: Kampagne, Anzeigengruppe, Keyword, Übereinstimmungstyp, QS, erwartete CTR, Anzeigenrelevanz, Landingpage-Erfahrung, Impressionen, Kosten.
  • Changes — Datum, Keyword, vorheriger QS, QS, Δ und Komponenten für jede Bewegung ≥ change_threshold.
  • _history — eine Zeile pro Tag (für keep_history_days Tage); _snapshot — die gestrigen Werte für den Vergleich.

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: täglich, 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'
emailEmpfänger durch Komma getrennt; leer = keine E-Mail. In _settings überschreibbar.''
account_idKunden-ID; nur nötig, wenn das Skript aus einem Verwaltungskonto (MCC) läuft.''
daysLänge des Analysefensters in Tagen.30
enabled_onlytrue = nur aktive Keywords; false = aktive und pausierte.true
min_impressionsMindestimpressionen im Fenster, damit ein Keyword enthalten ist.1
campaign_containsNur Kampagnen, deren Name diesen Text enthält.''
change_thresholdMinimale QS-Änderung (absolut), um in Changes und der E-Mail zu erscheinen.2
keep_history_daysTage, die _history-Zeilen behalten werden.400
max_rows_writtenZeilenlimit pro Tabelle; bei Überschreitung wird ein Hinweis ergänzt.5000
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

Ist email gesetzt, sendet jeder Lauf den gewichteten QS, die Anzahl der Bewegungen, die größten Verluste und Gewinne sowie die teuersten Keywords mit niedriger Qualität mit Link zum Sheet. Eine Slack-Option gibt es in diesem Skript nicht.

Hinweise und Grenzen

  • Die 7-Tage-Vergleichskarten des Dashboards brauchen mindestens 8 Tage Verlauf; davor zeigen sie einen Fehler — erwartet, kein Bug.
  • Alte v1-Snapshot-Schlüssel werden beim ersten Lauf automatisch migriert; beim Upgrade gehen keine Änderungen verloren.
  • 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.