Никто не застрахован от ситуации, когда деньги на аккаунте заканчиваются прежде времени. И хотя в таком случае вы не сливаете бюджет, но и ничего не зарабатываете, отдавая свой кусок пирога конкурентам.
Одним из путей решения данной проблемы является настройка оповещений об остатках средств. Это будет удобно, когда ответственных лиц и самих аккаунтов рекламных систем мало. Но что делать, когда у вас MCC аккаунт и свыше десятка ответственных лиц? Ответ лежит на поверхности — создать дашборд, в который будет подтягиваться информация об остатках средств со всех рекламных систем в разрезе клиента. Опционально можно добавить колонки, показывающие запас бюджета на N дней.
Из большинства рекламных систем получить данные довольно просто, достаточно почитать справку API. Но в случае с Adwords всё не так просто. Рассматриваемое далее решение не претендует на оригинальность и простоту внедрения, но оно не подводит и позволяет избегать простоев рекламных аккаунтов в Ads.
Ни в API Ads, ни в скриптах нет методов для запроса текущего баланса клиента, есть только методы для запроса информации о бюджетах аккаунтов, (можно узнать много информации, например размер бюджета, даты начала и окончания, размер корректировок, имя, id бюджета) но самое главное — сколько сейчас на счету средств — не узнать. И в API, и в скриптах все эти методы называются одинаково, а объекты имеют аналогичную структуру.
Про бюджеты в API:
https://developers.google.com/adwords/api/docs/guides/budget-order?hl=ru
Про бюджеты в скриптах:
https://developers.google.com/adwords/scripts/docs/reference/adwordsapp/adwordsapp_budgetorder?hl=ru
(Также в интерфейсе скриптов Ads есть примеры работы с бюджетами)
Как же быть, что же делать? Узнаем дату старта бюджета, которую можно либо запросить методом бюджета getStartDateTime, либо просто посмотрев дату создания аккаунта или бюджета. С помощью методов запрашиваем статистику по расходу (метод getStatsFor) от даты старта бюджета по настоящий день. Запрашиваем размер бюджета с помощью getSpendingLimit. Теперь остается из имеющегося бюджета отнять все расходы за рассматриваемый период; по идее мы получим значение текущего баланса, но нет, полученное число будет отличаться.
Всему виной недействительные клики, которых особенно много может быть в КМС. За недействительные клики Ads возвращает потраченные деньги обратно на баланс, тем самым увеличивая наш бюджет, но из статистики данные по расходу о недействительных кликах никуда не исчезают. Когда мы получаем информацию о расходах за определенный период, то получаем сумму как по обычным кликам, так и по недействительным. Получить статистику только по расходу недействительных кликов нельзя.
Отсюда рождается решение на коленке, реализуемое хоть скриптами, хоть API: получаем размер бюджета, вычитаем из него расходы за период, вычитаем подобранную константу, получаем примерное значение текущего баланса аккаунта. Очевидный минус в том, что недействительные клики и еще какие-либо перерасчеты не прекратятся, и значение этой вычитаемой константы надо будет периодически поправлять. Чтобы определиться с размером константы надо из текущего бюджета вычесть расходы и вычесть текущий баланс, который можно посмотреть в веб интерфейсе системы.
Почему у нас это сделано скриптами (в каждом клиентском аккаунте стоит типовой скрипт, разнятся только даты старта бюджетов и вычитаемые константы)? Спец следит за проектом, как только он видит, что получаемое значение баланса сильно начинает отклоняться от реального, он заходит в скрипты Ads и правит константу. На деле это выходит не чаще раза в 1-2 месяца. Если бы все это реализовывалось через API, то каждый спец передавал бы информацию программисту и постоянно дергал его. Внедрение скрипта быстрое, поддержка незатратная.
Скрипт сбора данных по остаткам бюджета из Google Ads в Google Таблицы доступен по ссылке.
Результатом работы скрипта становится массив из 3х значений: имя аккаунта, остаток, расход за 7 дней.
Эти значения вставляются в гугл таблицу, указанную в скрипте, в нашем случае — https://docs.google.com/spreadsheets/d/1eXXXX-XXXXXXXXXXXX/edit#gid=0.
Неважно в скольких аккаунтах будут работать такие скрипты, данные будут корректно вставляться в таблицу друг за другом, уникальным полем будет имя аккаунта. Скрипт Ads ставится на выполнение каждый час.
В таблице должен тоже работать скрипт, который будет срабатывать каждые 12 часов. Он будет очищать таблицу.
Код скрипта:
Ну а как передать данные из Google таблицы в тот самый дашборд с расходами по всем системам — тема для другой статьи.