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

Декабря 23, 2019

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

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

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

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

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

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»:ХХХХХХХХХ

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

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

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

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

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

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

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

 

Код скрипта

var CONFIG = {
   // Указать минимальное количество дней до окончания средств на аккаунте для отправки уведомления.
days : 7,
// Указать почты для отправки уведомлений, через запятую, если больше одной
   email : ['email@gmail.com', 'email2@gmail.com'],
// Указать ники/имена кому отправляется письмо, через запятую, если больше одного
names : ['Nick', 'Name'],
// Помечаем необходимые для отслеживания аккаунты ярлыком, пример - ActiveP
labelName : ['ActiveP']
}
function main () {
 var accounts = MccApp.accounts()
 .withCondition('LabelNames CONTAINS &quot;' + CONFIG.labelName + '&quot;')
 .executeInParallel(&quot;budgetControl&quot;)
 }
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(&quot;LAST_7_DAYS&quot;).getCost() / 7).toFixed();
         var limit = budget.getSpendingLimit();
         var remainingDays = rDays(limit, cost, last7DaysCostByDay);
         var budgetNow = (limit - cost).toFixed();
         if (budgetNow &lt; 0) {
           var budgetNow = 0;
         }
         else {
           var budgetNow = budgetNow;
         }
         Logger.log([accountName, budgetNow, last7DaysCostByDay, remainingDays]);
         if (remainingDays &lt; CONFIG.days) {
           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 = &quot;0&quot; + month;
 }
 if (day.length == 1) {
   day = &quot;0&quot; + day;
 }
 return [year, month, day].join(&quot;&quot;);
}
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 &lt; 1 || remainingDays == &quot;Infinity&quot; || remainingDays == &quot;-Infinity&quot; || remainingDays == -0 ) {
   remainingDays = 0;
 }
 return remainingDays;
}
function sendTelegramMessage(text) {
var CONFIG2 = {
TOKEN: 'TOKEN',
CHAT_ID: 'CHAT_ID'
};
var telegramUrl = 'https://api.telegram.org/bot' + CONFIG2.TOKEN + '/sendMessage?chat_id=' + CONFIG2.CHAT_ID + '&amp;text=';
var message = encodeURIComponent(text);
var sendMessageUrl = telegramUrl + message;
var options = {
method: 'POST',
contentType: 'application/json'
};
UrlFetchApp.fetch(sendMessageUrl, options);
}

Источник: netpeak.net

Читайте также:

    Как правильно работать с блогерами в Instagram: Четкая и последовательная инструкция

    Июля 02, 2017

    Продвижение бизнеса в Instagram – это не только публикации и взаимодействие внутри собственного профиля. Одно из серьезных и результативных направлений рекламы внутри социальной сети – это работа с блогерами. Некоторые из них могут привести не один десяток клиентов, другие – подогреть интерес к сообществу, повысить узнаваемость бренда, лояльность целевой аудитории и т.д. Для некоторых направлений […]

    Подробнее

    Акция на бесплатный СЕО аудит сайта (до 15.12.2016)

    Ноября 28, 2016

    Digital-агентство iProWeb приглашает Вас к взаимовыгодному сотрудничеству. В рамках акции, которая действует до 15 декабря 2016 года, компания iProWeb принимает заявки на проведение бесплатного SEO-аудита Вашего сайта. SEO-аудит это оценка соответствия сайта требованиям, при соблюдении которых он сможет привлекать максимум целевых посетителей с поисковых систем. Мы выясним все сильные и слабые места Вашего сайта. В […]

    Подробнее

    Первые шаги в Telegram: как создавать ботов и каналы в Telegram и их продвигать?

    Июля 10, 2017

    Мессенджер Telegram все чаще упоминается в СМИ не только как защищенный мессенджер для гиков, но и как перспективный маркетинговый инструмент с качественно новым способом общения с аудиторией. На нынешний момент суммарная численность пользователей по всему миру составляет более 100 миллионов. Еще один приятный бонус в том, что сейчас конкуренция в мессенджере очень низкая. В этом […]

    Подробнее