Как отслеживать остаток бюджета в Google Ads — скрипт для оповещений в Telegram
Для эффективного управления рекламными кампаниями, важно контролировать их бюджет. Недостаток средств приводит к потере потенциальных клиентов, а перерасход не всегда приносит желаемые результаты.
В этой статье я рассмотрю, как создать скрипт, который будет отслеживать остаток бюджета в Google Ads и отправлять уведомления в Telegam. Его можно настроить на отправку ежедневных, еженедельных или ежемесячных отчетов об остатке бюджета, независимо от оставшейся суммы.
Скрипт позволит своевременно реагировать на изменения, оптимизировать расходы и достигать лучших результатов от рекламных кампаний.
Итак, после прочтения этой статьи вы узнаете:
- Как установить скрипт в Google Ads на уровне MCC-аккаунта.
- Как создать телеграм-бот для получения уведомлений.
- Как исправить самые распространенные ошибки.
Важно! Приведенный скрипт работает только с аккаунтами Google Ads по предоплате и устанавливается на уровне MCC-аккаунта.
Как подключить скрипт
Первые настройки проводятся на уровне Google Ads. В MCC-аккаунте создайте метку на учетную запись, которую планируете отслеживать, под названием «Budget_Control».
Далее создайте новый скрипт в разделе «Инструменты — Массовые действия — Скрипты — Новый скрипт».
Скопируйте в поле следующий код:
var CONFIG = {
// Указать минимальное количество дней до окончания средств на аккаунте для отправки уведомления.
days: 7,
// Указать почты для отправки уведомлений, через запятую, если больше одной
email: ['test1@netpeak.net', 'test2@netpeak.net'],
// Указать ники/имена кому отправляется письмо, через запятую, если больше одного
names: ['test1', 'test2'],
// Помечаем необходимые для отслеживания аккаунты ярлыком, пример - BudgetControl
labelName: ['Budget_Control']
}
function main() {
var accounts = MccApp.accounts()
.withCondition('LabelNames CONTAINS "' + CONFIG.labelName + '"')
.executeInParallel("budgetControl")
}
function budgetControl() {
var accountName = AdWordsApp.currentAccount().getName();
var budgets = AdWordsApp.budgetOrders().withCondition('Status = ACTIVE').get();
while (budgets.hasNext()) {
try {
var budget = budgets.next();
if (budget.getSpendingLimit() !== null) {
var startDate = timeFormat(budget.getStartDateTime());
var cost = AdWordsApp.currentAccount().getStatsFor(startDate, today()).getCost();
var last7DaysCostByDay = (AdWordsApp.currentAccount().getStatsFor("LAST_7_DAYS").getCost() / 7).toFixed();
var limit = budget.getSpendingLimit();
var remainingDays = rDays(limit, cost, last7DaysCostByDay);
var budgetNow = (limit - cost).toFixed();
if (budgetNow < 0) {
var budgetNow = 0;
}
else {
var budgetNow = budgetNow;
}
sendTelegramMessage('Аккаунт ' + accountName + ' . Текущий баланс = ' + budgetNow + '. Расходы на день = ' + last7DaysCostByDay +
' . Денег хватит на ' + remainingDays + ' дня/дней.');
MailApp.sendEmail(CONFIG.email,
CONFIG.names + ' / Заканчивается бюджет в аккаунте: ' + accountName,
'Акаунт ' + accountName + ' . Текущий остаток = ' + budgetNow +
'. Расходы на день = ' + last7DaysCostByDay + ' в валюте аккаунта. ' +
'Денег хватит на ' + remainingDays + ' дня/дней. В аккаунте заканчиваются средства. Необходимо предупредить PM.');
}
}
catch (e) {
Logger.log(e);
sendTelegramMessage('Контроль Бюджетов ' + accountName);
MailApp.sendEmail(CONFIG.email,
'Контроль бюджетов',
'Необходимо проверить работу Контроль бюджетов ' + accountName + ' ' + e);
}
}
}
function timeFormat(date) {
var year = date.year.toString();
var month = date.month.toString();
var day = date.day.toString();
if (month.length == 1) {
month = "0" + month;
}
if (day.length == 1) {
day = "0" + day;
}
return [year, month, day].join("");
}
function today() {
var date = new Date();
var timeZone = AdWordsApp.currentAccount().getTimeZone();
var format = 'yyyyMMdd';
return Utilities.formatDate(date, timeZone, format);
}
function rDays(limit, cost, last7DaysCostByDay) {
var remainingDays = ((limit - cost) / last7DaysCostByDay).toFixed();
if (remainingDays < 1 || remainingDays == "Infinity" || remainingDays == "-Infinity" || remainingDays == -0 ) {
remainingDays = 0;
}
return remainingDays;
}
function sendTelegramMessage(text) {
var CONFIG2 = {
TOKEN: '6355186486:AAGAtOTNtoLDLwS-nLKERGbQJv1XMTM1MFM',
CHAT_ID: '-4182340330'
};
var telegramUrl = 'https://api.telegram.org/bot' + CONFIG2.TOKEN + '/sendMessage?chat_id=' + CONFIG2.CHAT_ID + '&text=';
var message = encodeURIComponent(text);
var sendMessageUrl = telegramUrl + message;
var options = {
method: 'POST',
contentType: 'application/json'
};
UrlFetchApp.fetch(sendMessageUrl, options);
}
В коде замените следующие данные на свои:
- строка 5 (электронная почта);
- строка 7 (имена);
- строка 9 (labelName) — название метки;
- строка 80 (TOKEN);
- строка 81 (CHAT_ID).
Где получить нужные TOKEN и CHAT_ID, я рассмотрю в следующем разделе.
Назовите скрипт «Budget_Control», нажмите «Авторизоваться» и «Запустить».
Как получить TOKEN и ID чата
Чтобы скрипт отправлял уведомления, настройте соответствующий чат в Telegram и соедините его со скриптом. Для этого выполните следующие шаги.
Шаг 1. Создайте и назовите новую группу в Telegram.
Шаг 2. Добавьте в эту группу себя и IDBot. Бот можете найти в общем поиске.
Шаг 3. Далее — создание бота, который будет присылать оповещения. Для этого на главном экране в Telegram введите в поиск BotFather и выберите его. Обратите внимание, возле имени бота должна быть синяя галочка.
Шаг 4. С помощью BotFather вы создадите ваш личный бот. В окне сообщения напишите /newbot и выберите эту команду из предложенного списка.
Шаг 5. В текстовом поле чата введите название (name) для вашего чат-бота. Оно может быть произвольным.
Шаг 6. Создайте адрес (username) чат-бота. Рекомендую использовать название и добавить в конце «_bot». Username должно быть уникальным.
Если вы получили сообщение «Извините, это имя пользователя уже занято. Пожалуйста, попробуйте что-то другое.», то такой адрес бота уже существует. Заметьте, что username не обязательно должен совпадать с name чат-бота.
Шаг 7. Если адрес не занят, вы получите сообщение «Done! Поздравляем с вашим новым ботом.». Из этого сообщения скопируйте созданный TOKEN.
Шаг 8. Откройте скрипт в Google Ads и вставьте TOKEN в соответствующую строку.
Шаг 9. Перейдите обратно в созданную группу и добавьте в нее бот, созданного в BotFather. Можете найти его по созданному адресу.
Шаг 10. Проверьте всех участников группы. Их должно быть минимум три:
- IDBot;
- бот, созданный через BotFather;
- ваш собственный аккаунт.
Вы также можете добавить в группу других участников, но лучше делать это после проверки работы скрипта, чтобы не беспокоить коллег тестовыми сообщениями.
Шаг 11. Теперь получите ID группы. Для этого через знак «/» вызовите команду «getgroupid@myidbot». В ответ на нее вам придет сообщение с ID группы. Скопируйте его вместе со знаком «-».
Шаг 12. Вставьте скопированный ID группы в код скрипта в Google Ads.
Шаг 13. Проверьте работу скрипта в Google Ads. Для этого нажмите кнопку «Авторизация» и пройдите процесс авторизации, а затем — кнопку «Запустить».
Готово!
Дополнительно выберите в настройке скрипта частоту отправки сообщений. Для этого в меню аккаунта MCC выберите «Инструменты и настройки — Скрипты» и отметьте нужный. При наведении на ячейку частоты, возникнет карандаш для редактирования. Доступна частота «ежедневно», «еженедельно», «ежемесячно».
Как исправить самые распространенные ошибки скрипта
Ошибка 1. Балансы в Telegram и в Google Ads не совпадают
Скрипт иногда передает некорректную сумму остатка бюджета. Это происходит из-за задержки в обновлении данных или же колебания расходов в режиме реального времени. Скрипт собирает данные в определенный момент времени, который может прийтись на момент активного размещения рекламы, и тогда сумма изменится из-за активных кликов или показов.
Такие неточности минимальны. Впрочем, если погрешность повторяется, откорректируйте ее вручную в коде.
Для этого нужно прибавить сальдо не совпадающей суммы в строке 30:
var budgetNow = (limit + 3703 - cost).toFixed();
«+3703» — сумма корректировки.
Успешно настроенный код будет отправлять информацию о балансе таким сообщением.
Ошибка 2. Чат-бот не получает сообщения из скрипта Google Ads
Наиболее вероятные причины:
- Ваш аккаунт больше не является администратором в группе Telegram. В случае удаления вас из группы в Telegram и назначения нового администратора, идентификатор группы чат-бота изменится, поэтому необходимо обновить скрипт с новым CHAT_ID. Для этого действующий администратор должен повторить Шаг 11.
- Аккаунт Google Ads работает не по предоплате, а, например, на автоматических платежах. В таком случае скрипт просто не подходит для работы с вашим аккаунтом.
Вам так же будет интересно:
- Как контролировать расход средств по группам кампаний — скрипт для Google Ads.
- Скрипт контроля в Google Ads: как получать уведомления о превышении расходов в Telegram.
Выводы
- Для запуска скрипта, который будет оповещать о балансе на рекламном аккаунте Google Ads через оповещения в Telegram нужно:
- создать скрипт в кабинете Google Ads в MCC-аккаунте;
- создать чат и бот в Telegram, получить TOKEN и CHAT_ID;
- занести TOKEN и CHAT_ID в соответствующие строки кода;
- запустить скрипт в кабинете Google Ads.
- Приведенный скрипт работает только с аккаунтами Google Ads по предоплате и устанавливается на уровне MCC-аккаунта.
- Баланс в оповещении может незначительно отличаться от баланса в Google Ads. Это связано с задержкой в обновлении данных. Погрешность корректируется вручную.
По теме
Диджитализация АТБ. Комплексный онлайн-маркетинг для лидера ритейла Украины — кейс
Рассказываем как выстроить комплексную диджитал-стратегию
Что такое контекстная реклама — все, что нужно знать
По прогнозам к 2027 году рынок контекстной рекламы достигнет $447,9 млрд. Ее используют как мировые гиганты, так и небольшой бизнес. Но подойдет ли она вам?
Свежее
SEO-продвижение медицинских сайтов. Все, что нужно знать — на примере сайтов аптек
Делюсь опытом продвижения сайтов аптек. Узнайте, как экспертный контент и техническая оптимизация помогают завоевывать доверие пользователей и поисковых систем
Кейс: как увеличить показы и установки приложения на 16% за две недели
Подробно о том, как мы улучшили позиции в топе и видимость в поисковой выдаче
Как легко запомнить пароли, пин-коды, телефоны и все важное
В статье поделюсь несколькими лайфхаками, которые помогут сохранить вашу память (и нервы!) и вовремя вспоминать, наконец, пин-коды банковских карт, исторические даты и другие важные вещи