Как настроить отправку уведомлений о состоянии бюджета аккаунтов Google Ads в Telegram и на почту


Делимся скриптом, который проверяет остаток денежных средств на всех аккаунтах, подключенных к My Client Center Google Ads (MCC). Скрипт отправляет уведомление на почту и в Telegram — это поможет вовремя пополнить счёт.

Важно: скрипт работает только с аккаунтами Google Ads по предоплате.

Пост и скрипт создан и доработан по материалам телеграм-канала Скрипты Google Ads, скриптов на GitHub (1, 2). 

Как подключить скрипт

1. Копируем скрипт и вставляем его в аккаунт MCC.

отправка уведомлений с аккаунтов Google Ads

2. Добавляем скрипт.

отправка уведомлений с аккаунтов Google Ads

3. Перед запуском обязательно изменяем значения в первом блоке.

отправка уведомлений с аккаунтов Google Ads

  • days — количество дней, на которое должно хватить остатка. То есть, если денег меньше, чем на семь дней, вы получите уведомление;
  • email — указываем почту/почты, на которые должны приходить уведомления. Важно: почтовые адреса нужно указывать в кавычках;
  • names — заменить ‘Nick’, ‘Name’ на свои значения (используется в теме письма при отправке);
  • labelName: ActiveP — ярлык для аккаунтов, которые нужно контролировать.

4. Создаем бота для Telegram.

  • открываем телеграмм, находим бота:

отправка уведомлений с аккаунтов Google Ads

  • придумываем имя и username. Рекомендую назвать одним значением, например Name_Bot. Вместо Name подставьте свое название;
  • вводим своё название для бота;
  • забиваем в строку username такое же название;

отправка уведомлений с аккаунтов Google Ads

  • если высветит ошибку «Sorry, this username is already taken. Please try something different», нужно выбрать другое название;
  • если все верно, получаем ответ:

отправка уведомлений с аккаунтов Google Ads

  • открываем нашего бота, отправляем ему любое сообщение;
  • после этого переходим по ссылке в браузере https://api.telegram.org/bot<ТОКЕН>/getUpdates. Здесь вместо <ТОКЕН> вставьте значение из ответа бота;

отправка уведомлений с аккаунтов Google Ads

  • видим ответ. Копируем цифры: "chat:{"id":ХХХХХХХХХ

отправка уведомлений с аккаунтов Google Ads

Не всегда показывается ID Chat. Если ID Chat не появился в окне браузера, то необходимо в Bot_Father сделать функцию /revoke и отправить повторно любое сообщение боту. После этого необходимо снова перейти в браузере по ссылке, заменив <ТОКЕН> на новое значение, полученное после функции /revoke.

  • вставляем полученные значения в переменные в скрипте (следующий пункт).

5. Измените значения во втором блоке скрипта (в самом низу):

отправка уведомлений с аккаунтов Google Ads

  • TOKEN — номер токена;
  • CHAT_ID — номер чата.

6. Авторизуйте скрипт.

7. Поставьте запуск скрипта по удобному вам расписанию.

отправка уведомлений с аккаунтов Google Ads

8. Итог — вот такие уведомления на почту:

отправка уведомлений с аккаунтов Google Ads

Так выглядят сообщения в Telegram:

отправка уведомлений с аккаунтов Google Ads

Код скрипта

var CONFIG = {   // Указать минимальное количество дней до окончания средств на аккаунте для отправки уведомления.days : 7,// Указать почты для отправки уведомлений, через запятую, если больше одной   email : ['email@gmail.com', 'email2@gmail.com'],// Указать ники/имена кому отправляется письмо, через запятую, если больше одногоnames : ['Nick', 'Name'],}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 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;         }         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);}


Комментарии