Рекламный скрипт Google для управления бюджетами кампании
Опубликовано: 2021-10-23Сегодня рекламодателям, использующим Google Рекламу, приходится постоянно бороться за определенный бюджет по кампаниям. Ваши параметры в пользовательском интерфейсе уникальны: установите правило, исключающее ежечасно. У меня вопрос почему? Разве не было бы замечательно иметь сценарий для управления на уровне кампании через лист в 2019 году? Это заняло некоторое время, но я разобрался, что вы увидите ниже. Возможность управлять бюджетами в одном скрипте с таблицей для нескольких кампаний.
Прежде чем мы перейдем к сценарию, если вы настроены на правила, чтобы не говорить, что они не подходят для управления бюджетом, вот пример того, как создать правило, которое имеет временные ограничения для приостановки или включения ваших кампаний на основе бюджета для кампании. Здесь вы можете найти дополнительную информацию об автоматизированных правилах .
- Войдите в свой аккаунт Google Рекламы.
- Перейдите на страницы Кампании , Группы объявлений или Ключевые слова .
- Щелкните значок с тремя точками над таблицей статистики.
- Выберите Создать автоматизированное правило .
- В раскрывающемся списке «Тип правила» выберите « Приостановить» или «Включить ».
- Выберите тип кампании
- Чтобы добавить условие, нажмите + ДОБАВИТЬ в разделе «Условие».
- Определите периодичность вашего правила: Один раз, Ежедневно, Еженедельно или Ежемесячно .
- Выберите тип сообщений электронной почты, которые вы хотите получать по вопросам, влияющим на ваше правило.
- Назовите свое правило.
- Щелкните Предварительный просмотр, чтобы убедиться, что вы настроили свое правило для работы так, как вам нужно. Предварительный просмотр предназначен только для проверки и не вносит никаких постоянных изменений в вашу учетную запись.
- Когда вы закончите, нажмите Сохранить правило .
На мой взгляд, из соображений экономии у правил есть преимущества, которые не так уж и ценны. Таким образом, нам остается платить за инструменты и или иметь разработчика или инженера для создания каких-то причудливых скриптов или внутренней платформы, которая работает с API Google. Что делать, если у меня нет доступа к этим ресурсам, и все, что я хочу делать, это быть рекламодателем? Я не могу, мне нужно изучить кодирование и API, чтобы быть в курсе всех изменений и улучшений пользовательского интерфейса, которые вы можете найти в библиотеке героев PPC.
Почему вы читаете и как работает сценарий.
Этот скрипт управляет вашим бюджетом на уровне кампании по часам с помощью таблицы Google, так что вы можете масштабировать. Насколько мне известно, и я рыскал по сети, это первое для публики. Я не писал оригинальный сценарий. Который можно найти здесь в Google. Я просто удалил кучу вещей с большим количеством проб и ошибок в течение 1 года и переделал несколько вещей, чтобы заставить их управлять бюджетами, а не ставками.
Скрипт позволяет гибко настраивать бюджеты и в разумных пределах забыть о них. Если вы хотите сходить с ума, вы можете сделать то, что делаю я, и использовать этот скрипт со скриптом времени размещения с несколькими настраиваемыми таблицами Google, чтобы у вас был собственный инструмент управления бюджетом и участник торгов. Я подумал, что если кто-то сможет создать инструмент для этого и заработать миллионы долларов, должен быть бесплатный способ сделать это.
Я уверен, почти уверен, что есть лучший способ написать этот скрипт, и более чем уверен, что есть способ сделать это на уровне MCC для управления несколькими учетными записями. Я этого не понял. Было бы здорово, если бы разработчики или инженеры это видели, чтобы внести изменения в этот скрипт и поделиться бесплатной версией на уровне MCC с вашими собственными улучшениями.
Как настроить скрипт
Перед запуском сценария вам необходимо изменить несколько вещей.
- Создайте новую таблицу Google. Здесь скрипт будет знать, какие кампании нужно приостановить или возобновить, после того как вы создадите новый лист, скопируйте URL-адрес.
- Убедитесь, что для вашего имени вкладки установлено значение «Правила», если нет, убедитесь, что вы обновили эту строку, где «Правила изменены на любое имя вашей вкладки: var spreadsheetAccess = new SpreadsheetAccess (SPREADSHEET_URL,« Rules »)
- Продолжая работать в Google Таблицах, обновите строку 2, указав номер своего счета «000-000-0000», заменив его собственным.
- Строка 3 - это эталонный период времени для запуска вашего скрипта, если вы хотите выполнить через 7 дней, 1 неделю или месяц. В приведенной ниже таблице указаны допустимые значения для этой строки, поскольку они связаны с вашей целью по контролю над вашими бюджетами.

- Начиная со строки 6 столбца C, вам нужно добавить свои бюджеты на этот период.
- Наконец, в строке 6 столбца D вы захотите перечислить свои кампании.
Я надеюсь, что это поможет вам лучше контролировать свои бюджеты. Чуть не забыл, вы можете изменить campaign.pause в скрипте на campaign.enable и настроить простую формулу, если вы хотите дублировать скрипт и создать другой скрипт для включения кампаний.
Сценарий
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; } } 