Skrypt reklam Google do zarządzania budżetami kampanii
Opublikowany: 2021-10-23Dzisiaj, jako reklamodawcy korzystający z Google Ads, powszechną walką jest zarządzanie określonym budżetem za pomocą kampanii. Twoje opcje w interfejsie użytkownika są pojedyncze: ustaw regułę, która wyklucza godzinę. Moje pytanie brzmi: dlaczego? Czy nie byłoby wspaniale mieć skrypt do zarządzania na poziomie kampanii, za pomocą arkusza w 2019 roku? Zajęło mi to trochę czasu, ale zorientowałem się, co zobaczysz poniżej. Możliwość zarządzania budżetami w jednym skrypcie z arkuszem w wielu kampaniach.
Zanim przejdziemy do skryptu, jeśli masz ustawione reguły, które nie nadają się do zarządzania budżetem, oto przykład, jak utworzyć regułę, która ma ograniczenia czasowe, aby wstrzymać lub włączyć kampanie na podstawie budżetu na kampanie. Dodatkowe szczegóły znajdziesz tutaj z regułami automatycznymi .
- Zaloguj się na swoje konto Google Ads.
- Przejdź do stron Kampanie , Grupy reklam lub Słowa kluczowe .
- Kliknij ikonę z trzema kropkami nad tabelą statystyk.
- Wybierz Utwórz regułę automatyczną .
- Wybierz Wstrzymaj lub Włącz z menu „Typ reguły”.
- Wybierz typ kampanii
- Aby dodać warunek, kliknij +DODAJ w sekcji „Warunek”.
- Zdefiniuj częstotliwość swojej reguły: Raz, Codziennie, Co tydzień lub Co miesiąc .
- Wybierz typ powiadomień e-mail, które chcesz otrzymywać o problemach wpływających na Twoją regułę.
- Nazwij swoją regułę.
- Kliknij Podgląd, aby upewnić się, że skonfigurowałeś regułę tak, jak chcesz. Podgląd służy tylko do weryfikacji i nie wprowadza żadnych trwałych zmian na koncie.
- Gdy skończysz, kliknij Zapisz regułę .
Są korzyści z zasad, moim zdaniem ze względu na budżet, nie tak bardzo cenne. Oznacza to, że musimy płacić za narzędzia lub mieć programistę lub inżyniera, który zbuduje jakieś fantazyjne skrypty lub wewnętrzną platformę, która współpracuje z interfejsem API Google. Co zrobić, jeśli nie mam dostępu do tych zasobów, a jedyne, co chcę zrobić, to zostać reklamodawcą? Nie mogę, muszę nauczyć się kodowania i API, aby być na bieżąco ze wszystkimi zmianami i ulepszeniami interfejsu użytkownika, które można znaleźć w PPC Hero Library.
Dlaczego czytasz i jak działa skrypt.
Ten skrypt zarządza Twoim budżetem na poziomie kampanii co godzinę za pomocą arkusza Google, dzięki czemu możesz skalować. Według mojej wiedzy i przeszukałem sieć, jest to pierwszy dla publiczności. Nie napisałem oryginalnego scenariusza. Które można znaleźć tutaj przez Google. Po prostu usunąłem kilka rzeczy z wieloma próbami i błędami przez okres 1 roku i przerobiłem kilka rzeczy, aby zmusić go do zarządzania budżetami zamiast stawek.
Skrypt pozwala na elastyczność w ustalaniu budżetów i zapominanie o nich w granicach rozsądku. Jeśli chcesz zaszaleć, możesz zrobić to, co ja i użyć tego skryptu ze skryptem tempa z kilkoma niestandardowymi arkuszami google, aby mieć własne narzędzie do zarządzania budżetem i licytującego. Pomyślałem, że jeśli ktoś może zbudować narzędzie do robienia tych rzeczy i zarabiać miliony dolarów, musi być na to darmowy sposób.
Jestem pewien, prawie pewny, że istnieje lepszy sposób napisania tego skryptu i bardziej niż pewien, że istnieje sposób na zrobienie tego na poziomie MCK, aby zarządzać wieloma kontami. Nie rozgryzłem tego. Byłoby wspaniale dla tych, którzy to widzą, którzy są programistami lub inżynierami, aby wprowadzić poprawki w tym skrypcie i udostępnić darmową wersję na poziomie MCK z własnymi ulepszeniami.
Jak skonfigurować skrypt
Zanim uruchomisz skrypt, oto kilka rzeczy, które musisz zmienić.
- Utwórz nowy Arkusz Google. W tym miejscu skrypt będzie wiedział, które kampanie należy wstrzymać lub wznowić, po utworzeniu nowego arkusza skopiuj adres URL.
- Upewnij się, że nazwa karty jest ustawiona na „Reguły”, jeśli nie, upewnij się, że aktualizujesz ten wiersz, w którym „Reguły są zmieniane na dowolną nazwę karty: var spreadsheetAccess = new SpreadsheetAccess (SPREADSHEET_URL, „ Rules ”)
- Nadal pracując w Arkuszach Google, zaktualizuj wiersz 2 swoim numerem konta „000-000-0000” zastąp własnym.
- Wiersz 3 to odniesienie do okresu czasu, w którym skrypt ma zostać uruchomiony, jeśli chcesz wykonać po 7 dniach, 1 tygodniu lub miesiącu. Poniższa tabela zawiera prawidłowe dane wejściowe dla tego wiersza, ponieważ odnosi się on do celu związanego z kontrolowaniem budżetów.
- Począwszy od wiersza 6, kolumny C, będziesz chciał dodać budżety na ten okres
- Na koniec w wierszu 6, kolumnie D, będziesz chciał wymienić swoje kampanie.
Mam nadzieję, że pomoże to Wam wszystkim lepiej kontrolować budżety. Prawie zapomniałem, można zmienić campaign.pause w skrypcie do campaign.enable i dopasować prostą formułę, jeśli chcesz powielać skrypt i utworzyć inny skrypt, aby włączyć kampanie.
Scenariusz
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; } }