Аналитика

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

90
17
22

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

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

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

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

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

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

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

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

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

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

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

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

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

Bot Father

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

    забиваем в строку 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 "' + 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;
                 }
                 Logger.log([accountName, budgetNow, last7DaysCostByDay, remainingDays]);
                 if (remainingDays < 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 = "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: 'CHAT_ID'
        };
        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);
        }
        
        

        Обнаружили ошибку? Выделите ее и нажмите Ctrl + Enter.

        Комментарии (19 )

        Последние комментарии

          Чтобы оставить комментарий, нужно войти

          Подписаться

          на самую полезную рассылку по интернет-маркетингу

          Самое

          обсуждаемое популярное читаемое

          Этот сайт использует куки-файлы и другие технологии, чтобы помочь вам в навигации, а также предоставить лучший пользовательский опыт, анализировать использование наших продуктов и услуг, повысить качество рекламных и маркетинговых активностей.