Як відстежувати залишок бюджету в 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 (email);
- рядок 7 (names);
- рядок 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 має бути унікальним.
Якщо ви отримали повідомлення «Sorry, this username is already taken. Please try something different.», така адреса боту вже існує. Зауважте, що username не обов’язково має співпадати з name чат-боту.
Крок 7. Якщо адреса не зайнята, ви отримаєте повідомлення «Done! Congratulations on your new bot.». З цього повідомлення скопіюйте створений TOKEN.
Крок 8. Відкрийте скрипт в Google Ads і вставте TOKEN у відповідний рядок.
Крок 9. Перейдіть назад у створену групу і додайте в неї бот, створеного в BotFather. Можете знайти його за створеною адресою.
Крок 10. Перевірте всіх учасників групи. Їх має бути мінімум три:
- IDBot;
- bot, створений через 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. Це пов’язано з затримкою в оновленні даних. Похибка коригується вручну.
Свіжі
SEO-аналітика: гайд для початківців
Дізнайтеся, які метрики важливо відслідковувати у SEO-аналітиці, для чого потрібні ці показники та яку користь приносять бізнесу
Як транспортному стартапу зайняти своє місце на гіперконкурентному ринку: zavezu.ua відкриває можливості для малих перевізників
Розповімо про створення унікальної торговельної пропозиції для zavezu.ua та стратегії розвитку на її основі
Історія співпраці Netpeak та OLX. Як розвивати диджитал-маркетинг і не боятись тестувати нові підходи
Розповідаємо про роботу та спільні досягнення з одним з найдавніших партнерів