Google Ad Script zur Verwaltung von Kampagnenbudgets
Veröffentlicht: 2021-10-23Heutzutage ist es für Werbetreibende, die Google Ads verwenden, ein universelles Problem, ein bestimmtes Budget nach Kampagne(n) zu verwalten. Ihre Optionen in der Benutzeroberfläche sind einzigartig: Legen Sie eine Regel fest, die stündlich ausschließt. Meine Frage ist warum? Wäre es nicht großartig, 2019 ein Skript auf Kampagnenebene über ein Blatt zu verwalten? Es hat einige Zeit gedauert, aber ich habe es herausgefunden, was Sie unten sehen werden. Die Möglichkeit, Budgets in einem einzigen Skript mit einem Tabellenblatt für mehrere Kampagnen zu verwalten.
Bevor wir mit dem Skript fortfahren, wenn Sie Regeln festlegen, die nicht sagen, dass sie für die Budgetverwaltung nicht geeignet sind, finden Sie hier ein Beispiel dafür, wie Sie eine Regel erstellen, die zeitliche Begrenzungen zum Pausieren oder Aktivieren Ihrer Kampagnen basierend auf einem Budget für Kampagnen. Weitere Details finden Sie hier mit automatisierten Regeln .
- Melden Sie sich in Ihrem Google Ads-Konto an.
- Rufen Sie die Seiten Kampagnen , Anzeigengruppen oder Keywords auf .
- Klicken Sie über der Statistiktabelle auf das 3-Punkte-Symbol.
- Wählen Sie Automatisierte Regel erstellen aus .
- Wählen Sie im Dropdown- Menü " Regeltyp " die Option Anhalten oder Aktivieren aus.
- Wählen Sie den Kampagnentyp
- Um eine Bedingung hinzuzufügen, klicken Sie unter „Bedingung“ auf +ADD .
- Definieren Sie die Häufigkeit Ihrer Regel, die Einmal, Täglich, Wöchentlich oder Monatlich ist .
- Wählen Sie die Art der E-Mail-Updates aus, die Sie zu Problemen erhalten möchten, die Ihre Regel betreffen.
- Benennen Sie Ihre Regel.
- Klicken Sie auf Vorschau, um sicherzustellen, dass Sie Ihre Regel so eingerichtet haben, dass sie wie gewünscht ausgeführt wird. Die Vorschau dient nur zur Überprüfung und führt zu keinen dauerhaften Änderungen an Ihrem Konto.
- Wenn Sie fertig sind, klicken Sie auf Regel speichern .
Regeln haben meiner Meinung nach Vorteile aus Budgetgründen, die nicht so extrem wertvoll sind. Damit müssen wir für Tools bezahlen und einen Entwickler oder Ingenieur haben, der einige ausgefallene Skripte oder eine interne Plattform entwickelt, die mit der Google-API funktioniert. Was ist, wenn ich keinen Zugriff auf diese Ressourcen habe und nur ein Werbetreibender sein möchte? Ich kann nicht, ich muss Programmier- und API-Sachen lernen, um über alle Änderungen und Verbesserungen der Benutzeroberfläche auf dem Laufenden zu bleiben, die Sie in der PPC Hero Library finden.
Warum Sie lesen und wie das Skript funktioniert.
Dieses Skript verwaltet Ihr Budget auf Kampagnenebene stundenweise über ein Google Sheet, sodass Sie skalieren können. Meines Wissens und ich habe das Internet durchforstet, ist dies der erste für die Öffentlichkeit. Ich habe das Originalskript nicht geschrieben. Welche hier bei Google zu finden ist. Ich habe einfach über einen Zeitraum von einem Jahr eine Reihe von Dingen mit viel Trial-and-Error gelöscht und ein paar Dinge überarbeitet, um Budgets anstelle von Geboten zu verwalten.
Das Skript bietet Ihnen die Flexibilität, Ihre Budgets festzulegen und sie im Rahmen des Zumutbaren zu vergessen. Wenn Sie verrückt werden wollen, können Sie tun, was ich tue, und dieses Skript mit dem Tempo-Skript mit einigen benutzerdefinierten Google-Tabellen verwenden, damit Sie Ihr eigenes Budgetverwaltungstool und einen eigenen Bieter haben. Ich dachte mir, wenn jemand ein Werkzeug bauen kann, um dieses Zeug zu machen und Millionen von Dollar zu verdienen, muss es einen kostenlosen Weg geben, dies zu tun.
Ich bin mir sicher, fast sicher, dass es eine bessere Möglichkeit gibt, dieses Skript zu schreiben, und mehr als sicher gibt es eine Möglichkeit, auf Kundencenterebene mehrere Konten zu verwalten. Das habe ich nicht herausgefunden. Es wäre großartig für diejenigen, die dies sehen, die Entwickler und/oder Ingenieure sind, Anpassungen an diesem Skript vorzunehmen und eine kostenlose Version auf MCC-Ebene mit Ihren eigenen Verbesserungen zu teilen.
So richten Sie das Skript ein
Bevor Sie das Skript ausführen, müssen Sie einige Dinge ändern.
- Erstellen Sie ein neues Google-Tabellenblatt. Hier weiß das Skript, welche Kampagnen pausiert oder aufgehoben werden sollen, sobald Sie ein neues Blatt erstellt haben, kopieren Sie die URL.
- Stellen Sie sicher, dass Ihr Tab-Name auf "Regeln" gesetzt ist, wenn nicht, stellen Sie sicher, dass Sie diese Zeile aktualisieren, in der "Regeln in Ihren Tab-Namen geändert werden: var SpreadsheetAccess = new SpreadsheetAccess(SPREADSHEET_URL, " Rules ")
- Wenn Sie noch in Google Tabellen arbeiten, aktualisieren Sie Zeile 2 mit Ihrer Kontonummer "000-000-0000" und ersetzen Sie sie durch Ihre eigene.
- Zeile 3 ist die Zeitreferenz für die Ausführung Ihres Skripts, wenn Sie es nach 7 Tagen, 1 Woche oder einem Monat ausführen möchten. In der folgenden Tabelle finden Sie gültige Eingaben für diese Zeile in Bezug auf Ihr Ziel bei der Budgetkontrolle.

- Beginnen Sie in Zeile 6, Spalte C, und fügen Sie Ihre Budgets für diesen Zeitraum hinzu
- Schließlich möchten Sie in Zeile 6, Spalte D, Ihre Kampagnen auflisten.
Ich hoffe, dies hilft Ihnen dabei, Ihre Budgets besser zu kontrollieren. Fast vergessen, Sie können Campaign.pause im Skript in Campaign.enable ändern und die einfache Formel anpassen, wenn Sie das Skript duplizieren und ein weiteres Skript erstellen möchten, um Kampagnen zu aktivieren.
Skript
var SPREADSHEET_URL = "[https://docs.google.com/spreadsheets/d/1AbldNxsSPHkE0WcOY01AoM7EimF2_7XDrvI5FeLcarY/edit#gid=0]"; var spreadsheetAccess = new SpreadsheetAccess(SPREADSHEET_URL, "Rules"); var totalColumns; function main() { var columns = spreadsheetAccess.sheet.getRange(5, 2, 5, 100).getValues()[0]; for (var i = 0; i < columns.length; i ++) { if (columns[i].length == 0 || columns[i] == 'Results') { totalColumns = i; break; } } if (columns[totalColumns] != 'Results') { spreadsheetAccess.sheet.getRange(5, totalColumns + 2, 1, 1).setValue("Results"); } // clear the results column spreadsheetAccess.sheet.getRange(6, totalColumns + 2, 1000, 1).clear(); var row = spreadsheetAccess.nextRow(); while (row != null) { var budget; try { budget = parseBudget(row); } catch (ex) { logError(ex); row = spreadsheetAccess.nextRow(); continue; } var selector = AdWordsApp.campaigns(); for (var i = 2; i < totalColumns; i ++) { var header = columns[i]; var value = row[i]; if (!isNaN(parseFloat(value)) || value.length > 0) { if (header.indexOf("'") > 0) { value = value.replace(/\'/g,"\\'"); } else if (header.indexOf("\"") > 0) { value = value.replace(/"/g,"\\\""); } var condition = header.replace('?', value); selector.withCondition(condition); } } var campaigns = selector.get(); try { campaigns.hasNext(); } catch (ex) { logError(ex); row = spreadsheetAccess.nextRow(); continue; } var fetched = 0; var changed = 0; while (campaigns.hasNext()) { var campaign = campaigns.next(); var oldCost = campaign.getStatsFor("THIS_MONTH").getCost(); var action = row[0]; var newStatus; fetched ++; if (budget <= oldCost) { campaign.pause(); changed++ } } logResult("Fetched " + fetched + "\nChanged " + changed); row = spreadsheetAccess.nextRow(); } var now = new Date(Utilities.formatDate(new Date(), AdWordsApp.currentAccount().getTimeZone(), "MMM dd,yyyy HH:mm:ss")); } function parseBudget(row) { if (row[1].length == 0) { return null; } var limit = parseFloat(row[1]); if (isNaN(limit)) { throw "Bad Argument: must be a number."; } return limit; } function logError(error) { spreadsheetAccess.sheet.getRange(spreadsheetAccess.currentRow(), totalColumns + 2, 1, 1) .setValue(error) .setFontColor('#c00') .setFontSize(8) .setFontWeight('bold'); } function logResult(result) { spreadsheetAccess.sheet.getRange(spreadsheetAccess.currentRow(), totalColumns + 2, 1, 1) .setValue(result) .setFontColor('#444') .setFontSize(8) .setFontWeight('normal'); } function SpreadsheetAccess(spreadsheetUrl, sheetName) { this.spreadsheet = SpreadsheetApp.openByUrl(spreadsheetUrl); this.sheet = this.spreadsheet.getSheetByName(sheetName); this.cells = this.sheet.getRange(6, 2, this.sheet.getMaxRows(), this.sheet.getMaxColumns()).getValues(); this.rowIndex = 0; this.nextRow = function() { for (; this.rowIndex < this.cells.length; this.rowIndex ++) { if (this.cells[this.rowIndex][0]) { return this.cells[this.rowIndex++]; } } return null; } this.currentRow = function() { return this.rowIndex + 5; } } 