Google Ads Scripts entwickelt sich aber parallel zu Google Ads immer weiter, so dass bestehende Skripte teilweise aktualisiert werden müssen, damit diese weiter ausgeführt werden können.
Wenn jetzt Änderungen am Script notwendig werden, können diese zentral in Google-Drive vorgenommen werden.
Als Beispiel nehmen wir das von Google kostenlos zur Verfügung gestellte Google Ads Script "In Konflikt stehende ausschließende Keywords.
Das Script gibt es zwar auch fürs Verwaltungskonto, also dass das Script automatisch mehrere Accounts abarbeitet, aber auch hier muss man das Script oft mehrmals anlegen und für unterschiedliche Google Ads Konten konfigurieren.
Gründe dafür:
Auf der Seite Fertige Google Ads Scripts verwenden haben wir Schritt für Schritt beschrieben, wie man hier vorgeht.
Im Folgenden gehen wir davon aus, dass für die Ergebnistabelle in Google Drive der Name "Ergebnis Negative Keyword Conflicts" gewählt wurde.
Im Originalscript von der Google-Seite sieht der Bereich mit den konfigurierbaren Variablen so aus:
Vor der Ausführung müssen einige Variablen definiert werden - andere können definiert werden. Wir ändern in diesem Beispiel zwei notwendige Parameter:
Jedes Script benötigt bestimmte Rechte. Beim ersten Klick auf Vorschau oder Ausführung fragt Google nach, ob das Script diese Rechte (z.B. Zugriff auf Google Drive) bekommen soll. Dies sieht dann so aus:
Skripte, die jedoch zentral abgelegt und nachgeladen werden, werden nicht (mehr) untersucht, ob bestimmte Rechte erforderlich sind. Deshalb ist es wichtig, das Script vorher mal laufen zu lassen.
Damit man aus dem einen Script zwei machen kann - eins fürs Google Ads Konto mit den Parametern und eins für Google Drive mit dem eigentlichen Programm - muss man die konfigurierbaren Parameter an den Anfang des Scripts auslagern.
Alles, was man künftig in jedem Google Ads Konto individuell einstellen möchte, lagert man in neu definierte Variablen aus, die man über das Script schreibt. Für alle Skripte, die man in Google Drive auslagern will, haben wir dieses Template vorbereitet, dass man ganz oben vor dem eigentlichen Script einfügt:
// Angaben für jedes Script in Google Drive: var g_sScriptName = ""; var g_sGoogleDriveUrl = ""; var g_sMailAddress = ""; // Individuelle Angaben je Script // ------ ab hier alles nach Google Drive auslagern ----
Die Namen der Variablen unter "Individuelle Angaben je Script" kann man frei definieren - nur wenn irgendwo eine Mailadresse angegeben wird, sollte die Variable g_sMailAddress
verwendet werden.
Die Variablen, die man oben definiert hat, müssen jetzt an der entsprechenden Stelle im Script eingefügt werden.
In unserem Beispiel sieht das dann so aus.
Ganz oben:
Config-Bereich:
Auch jetzt sollte man das Script noch mal ausführen. Nach der Aufteilung gestaltet sich die Fehlersuche deutlich schwieriger.
Den Bereich unterhalb von // ------ ab hier alles nach Google Drive auslagern ----
lagert man jetzt in eine Datei auf der Festplatte aus.
Vor dem Speichern ändern wir noch eine Kleinigkeit im Script: Aus function main()
wird function mainImpl()
- es wird also lediglich "main" durch "mainImpl" ersetzt.
Als Dateiname wählen wir "Script-Negative-Keywords-Conflicts.js" - so fängt das Script vorne mit "Script" an und die Datei mit den Ergebnissen der Auswertung mit "Ergebnis". So kann man die Dateien in Google Drive leicht unterscheiden. Die Dateien kann man übrigens später noch in Google Drive in andere Ordner verschieben.
Der Zeichensatz der Datei sollte UTF-8 sein - falls Sonderzeichen oder Umlaute im Script verwendet werden.
Die Zeile // ------ ab hier alles nach Google Drive auslagern ----
selbst ersetzt man durch diese Zeilen:
function main() { try { eval(UrlFetchApp.fetch(g_sGoogleDriveUrl.replace("/open?", "/uc?export=download&")).getContentText()); mainImpl(); } catch (e) { try {MailApp.sendEmail(g_sMailAddress, "Exception in Script '"+g_sScriptName+"' - "+AdWordsApp.currentAccount().getName(), "Exception: "+e.message+"\r\nStacktrace:\r\n"+e.stack);} catch (e2) {Logger.log(e2.message);} throw e; } }
// Angaben für jedes Script in Google Drive: var g_sScriptName = "Negative keyword Conflicts"; var g_sGoogleDriveUrl = ""; var g_sMailAddress = 'holger.schulz@data-inside.de'; // Individuelle Angaben je Script var g_spreadsheeturl = 'https://docs.google.com/spreadsheets/d/11m876PVwkTKNJYwbXCBbYMTOHAiSAHreOIDY0ePy2Z4/edit#gid=0'; function main() { try { eval(UrlFetchApp.fetch(g_sGoogleDriveUrl.replace("/open?", "/uc?export=download&")).getContentText()); mainImpl(); } catch (e) { try {MailApp.sendEmail(g_sMailAddress, "Exception in Script '"+g_sScriptName+"' - "+AdWordsApp.currentAccount().getName(), "Exception: "+e.message+"\r\nStacktrace:\r\n"+e.stack);} catch (e2) {Logger.log(e2.message);} throw e; } }
Was fehlt, ist die URL in g_sGoogleDriveUrl
für das eigentliche Script in Google Drive - das holen wir uns jetzt.
Das Script kann man ganz einfach per Drag&Drop in Google Drive einfügen.
Alternativ auch über das Menü:
Die URL des Scripts erfahren wir, wenn mit der rechten Maustaste auf das Script klicken und den Link zum Freigeben abrufen>
Diesen Link kopieren wir in die Zwischenablage und dann in die Variable g_sGoogleDriveUrl
.
Das fertige Script sieht dann so aus:
Wenn wir jetzt auf "Vorschau" oder "Skript jetzt ausführen" klicken, erscheint wieder eine Abfrage von Google:
Nicht vergessen, das Script auf automatische, tägliche Ausführung zu stellen!
Ursprünglich hatten wir auch unseren Google Ads Scripts Linkchecker zum täglichen Überprüfen der Landingpages auf Google Drive ausgelagert. Das wurden aber schnell so viele Zugriffe, dass das Kontingent, dass Google einräumt, damals nicht ausreichte. Für den internen Gebrauch in einer Agentur sollte das aber kein Problem darstellen.
Auf die in Google Drive erstellten Dateien kann man auch sehr schön anderen Zugriff geben (sharen/freigeben).
Siehe: https://support.google.com/drive/answer/2494822
Ich freue mich über Feedback!:-)