Как настроить отправку уведомлений о состоянии бюджета аккаунтов Google Ads в Telegram и на почту
Делимся скриптом, который проверяет остаток денежных средств на отдельных аккаунтах Google Ads. Скрипт отправляет уведомление на почту и в Telegram — это поможет вовремя пополнить счёт.
Первая версия статьи вышла в 2019 году. Обновление информации и доработку кода выполнил Дмитрий Конарев, Upper-Junior PPC Specialist агентства Netpeak.
Важно: скрипт работает только с аккаунтами Google Ads по предоплате.
Пост и скрипт создан и доработан по материалам телеграм-канала Скрипты Google Ads, скриптов на GitHub (1, 2).
Как подключить скрипт
1. Копируем скрипт и вставляем его в аккаунт.
2. Добавляем скрипт.
3. Перед запуском обязательно изменяем значения в первом блоке.
- days — количество дней, на которое должно хватить остатка. То есть, если денег меньше, чем на семь дней, вы получите уведомление;
- email — указываем почту/почты, на которые должны приходить уведомления. Важно: почтовые адреса нужно указывать в кавычках;
- names — заменить ‘Nick’, ‘Name’ на свои значения (используется в теме письма при отправке);
- labelName: ActiveP — ярлык для аккаунтов, которые нужно контролировать.
4. Создаем бота для Telegram.
- открываем телеграмм, находим бота:
- придумываем имя и username. Рекомендую назвать одним значением, например Name_Bot. Вместо Name подставьте свое название;
- вводим своё название для бота;
- забиваем в строку username такое же название;
- если высветит ошибку «Sorry, this username is already taken. Please try something different», нужно выбрать другое название;
- если все верно, получаем ответ:
- открываем нашего бота, отправляем ему любое сообщение;
- после этого переходим по ссылке в браузере https://api.telegram.org/bot<ТОКЕН>/getUpdates. Здесь вместо <ТОКЕН> вставьте значение из ответа бота;
- видим ответ. Копируем цифры: "chat:{"id":ХХХХХХХХХ
Не всегда показывается ID Chat. Если ID Chat не появился в окне браузера, то необходимо в Bot_Father сделать функцию /revoke и отправить повторно любое сообщение боту. После этого необходимо снова перейти в браузере по ссылке, заменив <ТОКЕН> на новое значение, полученное после функции /revoke.
- вставляем полученные значения в переменные в скрипте (следующий пункт).
5. Измените значения во втором блоке скрипта (в самом низу):
- TOKEN— номер токена;
- CHAT_ID— номер чата.
6. Авторизуйте скрипт.
7. Поставьте запуск скрипта по удобному вам расписанию.
8. Итог — вот такие уведомления на почту:
Так выглядят сообщения в Telegram:
Код скрипта
var CONFIG = {
// Указать минимальное количество дней до окончания средств на аккаунте для отправки уведомления.
days: 7,
// Указать почты для отправки уведомлений, через запятую, если больше одной
email: ['email@gmail.com', 'email2@gmail.com'],
// Указать ники/имена кому отправляется письмо, через запятую, если больше одного
names: ['Nick', 'Nick2'],
}
function main() {
var accountName = AdWordsApp.currentAccount().getName();
var budgets = AdWordsApp.budgetOrders().withCondition('Status = ACTIVE').get();
try {
var budget = budgets.next();
if (budget.getSpendingLimit() !== null) {
var startDate = timeFormat(budget.getStartDateTime());
var cost = AdWordsApp.currentAccount().getStatsFor(startDate, today()).getCost();
var limit = budget.getSpendingLimit();
var last7DaysCostByDay = (AdWordsApp.currentAccount().getStatsFor("LAST_7_DAYS").getCost() / 7).toFixed();
var remainingDays = rDays(limit, cost, last7DaysCostByDay);
var adjustments = AdWordsApp.budgetOrders().get().next().getTotalAdjustments();
var budgetNow = (limit - cost).toFixed();
if (budgetNow < 0) {
var budgetNow = 0;
}
else {
var budgetNow = budgetNow;
}
Logger.log([accountName, budgetNow, last7DaysCostByDay, remainingDays, adjustments]);
var messageHeader = CONFIG.names + ' / Заканчивается бюджет на аккаунте: ' + accountName;
var messageBody = 'Аккаунт ' + accountName + ' . Текущий остаток = ' + budgetNow +
'. Расход в день = ' + last7DaysCostByDay + ' в валюте аккаунта. ' +
'Денег хватит на ' + remainingDays + ' дня/дней. В аккаунте заканчиваются средства. Необходимо предупредить PM.';
if (remainingDays < CONFIG.days) {
MailApp.sendEmail(CONFIG.email, messageHeader, messageBody);
sendTelegramMessage(messageHeader + '. ' + messageBody);
}
}
}
catch (e) {
Logger.log(e);
var messageHeader = 'Ошибка выполнения скрипта Контроль бюджетов';
var messageBody = 'Необходимо проверить работу скрипта Контроль бюджетов ' + accountName + ' ' + e;
MailApp.sendEmail(CONFIG.email, messageHeader, messageBody);
sendTelegramMessage(messageHeader + '. ' + messageBody);
}
}
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: 'TOKEN',
CHAT_ID: 'ID_CHAT_BOT'
};
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);
}
Свежее
История успеха приложения OkTalk: рост количества загрузок на рынке США и Франции
Мы получили увеличение установок в США на 130% и во Франции на 700%
Оптимизация страниц пагинации интернет-магазина — подробная инструкция
Как правильно оптимизировать страницы пагинации, чтобы не допустить проседание целевого трафика
Больше чем созвоны. Что такое услуга CMO on demand
Почти год назад сооснователь Netpeak Андрей Чумаченко начал разрабатывать новую услугу CMO on demand. Прочитайте, как это работает.