PPC
1729753200

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

Для эффективного управления рекламными кампаниями, важно контролировать их бюджет. Недостаток средств приводит к потере потенциальных клиентов, а перерасход не всегда приносит желаемые результаты.

В этой статье я рассмотрю, как создать скрипт, который будет отслеживать остаток бюджета в Google Ads и отправлять уведомления в Telegam. Его можно настроить на отправку ежедневных, еженедельных или ежемесячных отчетов об остатке бюджета, независимо от оставшейся суммы. 

Скрипт позволит своевременно реагировать на изменения, оптимизировать расходы и достигать лучших результатов от рекламных кампаний. 

Итак, после прочтения этой статьи вы узнаете:

  1. Как установить скрипт в Google Ads на уровне MCC-аккаунта.
  2. Как создать телеграм-бот для получения уведомлений.
  3. Как исправить самые распространенные ошибки.

Важно! Приведенный скрипт работает только с аккаунтами Google Ads по предоплате и устанавливается на уровне MCC-аккаунта.

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

Первые настройки проводятся на уровне Google Ads. В MCC-аккаунте создайте метку на учетную запись, которую планируете отслеживать, под названием «Budget_Control».

В 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 (электронная почта);
  • строка 7 (имена);
  • строка 9 (labelName) — название метки;
  • строка 80 (TOKEN);
  • строка 81 (CHAT_ID).

Где получить нужные TOKEN и CHAT_ID, я рассмотрю в следующем разделе. 

Назовите скрипт «Budget_Control», нажмите «Авторизоваться» и «Запустить».

Назвіть скрипт «Budget_Control»,натисніть «Авторизуватись» та «Запустити».

Как получить TOKEN и ID чата

Чтобы скрипт отправлял уведомления, настройте соответствующий чат в Telegram и соедините его со скриптом. Для этого выполните следующие шаги.

Шаг 1. Создайте и назовите новую группу в Telegram.

Крок 1. Створіть і назвіть нову групу в Telegram. 

Шаг 2. Добавьте в эту группу себя и IDBot. Бот можете найти в общем поиске.

Крок 2. Додайте в цю групу себе та IDBot. Бот можете знайти в загальному пошуку. 

Шаг 3. Далее — создание бота, который будет присылать оповещения. Для этого на главном экране в Telegram введите в поиск BotFather и выберите его. Обратите внимание, возле имени бота должна быть синяя галочка.

Зверніть увагу, біля імені боту має бути синя галочка.

Шаг 4. С помощью BotFather вы создадите ваш личный бот. В окне сообщения напишите /newbot и выберите эту команду из предложенного списка.

Крок 4. За допомогою BotFather ви створите ваш особистий бот. У вікні повідомлення напишіть /newbot й оберіть цю команду з запропонованого списку.

Шаг 5. В текстовом поле чата введите название (name) для вашего чат-бота. Оно может быть произвольным.

Крок 5. У текстовому полі чату введіть назву (name) для вашого чат-боту. Вона може бути довільною.

Шаг 6. Создайте адрес (username) чат-бота. Рекомендую использовать название и добавить в конце «_bot». Username должно быть уникальным.

Если вы получили сообщение «Извините, это имя пользователя уже занято. Пожалуйста, попробуйте что-то другое.», то такой адрес бота уже существует. Заметьте, что username не обязательно должен совпадать с name чат-бота.

Зауважте, що username не обов’язково має співпадати з name чат-боту. 

Шаг 7. Если адрес не занят, вы получите сообщение «Done! Поздравляем с вашим новым ботом.». Из этого сообщения скопируйте созданный TOKEN.

Крок 7. Якщо адреса не зайнята, ви отримаєте повідомлення «Done! Congratulations on your new bot.». З цього повідомлення скопіюйте створений TOKEN.

Шаг 8. Откройте скрипт в Google Ads и вставьте TOKEN в соответствующую строку.

Крок 8. Відкрийте скрипт в Google Ads і вставте TOKEN у відповідний рядок.

Шаг 9. Перейдите обратно в созданную группу и добавьте в нее бот, созданного в BotFather. Можете найти его по созданному адресу.  

Крок 9. Перейдіть назад у створену групу і додайте в неї бот, створеного в BotFather. Можете знайти його за створеною адресою. 

Шаг 10. Проверьте всех участников группы. Их должно быть минимум три:

  • IDBot;
  • бот, созданный через BotFather;
  • ваш собственный аккаунт.

Вы также можете добавить в группу других участников, но лучше делать это после проверки работы скрипта, чтобы не беспокоить коллег тестовыми сообщениями.

Ви також можете додати в групу інших учасників, але краще робити це після перевірки роботи скрипту, щоб не турбувати колег тестовими повідомленнями.

Шаг 11. Теперь получите ID группы. Для этого через знак «/» вызовите команду «getgroupid@myidbot». В ответ на нее вам придет сообщение с ID группы. Скопируйте его вместе со знаком «-».

Скопіюйте його разом зі знаком «-». 

Шаг 12. Вставьте скопированный ID группы в код скрипта в Google Ads.

Крок 12. Вставте скопійований ID групи в код скрипту в Google Ads.

Шаг 13. Проверьте работу скрипта в Google Ads. Для этого нажмите кнопку «Авторизация» и пройдите процесс авторизации, а затем — кнопку «Запустить».

Для цього натисніть кнопку «Авторизація» та пройдіть процес авторизації, а тоді — кнопку «Запустити».

Готово! 

Дополнительно выберите в настройке скрипта частоту отправки сообщений. Для этого в меню аккаунта MCC выберите «Инструменты и настройки — Скрипты» и отметьте нужный. При наведении на ячейку частоты, возникнет карандаш для редактирования. Доступна частота «ежедневно», «еженедельно», «ежемесячно».

Доступна частота «щодня», «щотижня», «щомісяця».

Как исправить самые распространенные ошибки скрипта

Ошибка 1. Балансы в Telegram и в Google Ads не совпадают

Скрипт иногда передает некорректную сумму остатка бюджета. Это происходит из-за задержки в обновлении данных или же колебания расходов в режиме реального времени. Скрипт собирает данные в определенный момент времени, который может прийтись на момент активного размещения рекламы, и тогда сумма изменится из-за активных кликов или показов.

Такие неточности минимальны. Впрочем, если погрешность повторяется, откорректируйте ее вручную в коде.

Для этого нужно прибавить сальдо не совпадающей суммы в строке 30:

var budgetNow = (limit + 3703 - cost).toFixed();

«+3703» — сумма корректировки. 

«+3703» —  сума корегування. 

Успешно настроенный код будет отправлять информацию о балансе таким сообщением.

Успішно налаштований код відправлятиме інформацію про баланс таким повідомленням. 

Ошибка 2. Чат-бот не получает сообщения из скрипта Google Ads

Наиболее вероятные причины:

  1. Ваш аккаунт больше не является администратором в группе Telegram. В случае удаления вас из группы в Telegram и назначения нового администратора, идентификатор группы чат-бота изменится, поэтому необходимо обновить скрипт с новым CHAT_ID. Для этого действующий администратор должен повторить Шаг 11.
  2. Аккаунт Google Ads работает не по предоплате, а, например, на автоматических платежах. В таком случае скрипт просто не подходит для работы с вашим аккаунтом.

Вам так же будет интересно: 

  1. Как контролировать расход средств по группам кампаний — скрипт для Google Ads.
  2. Скрипт контроля в Google Ads: как получать уведомления о превышении расходов в Telegram.

Выводы

  1. Для запуска скрипта, который будет оповещать о балансе на рекламном аккаунте Google Ads через оповещения в Telegram нужно:
  • создать скрипт в кабинете Google Ads в MCC-аккаунте;
  • создать чат и бот в Telegram, получить TOKEN и CHAT_ID;
  • занести TOKEN и CHAT_ID в соответствующие строки кода;
  • запустить скрипт в кабинете Google Ads.
  1. Приведенный скрипт работает только с аккаунтами Google Ads по предоплате и устанавливается на уровне MCC-аккаунта.
  2. Баланс в оповещении может незначительно отличаться от баланса в Google Ads. Это связано с задержкой в обновлении данных. Погрешность корректируется вручную.
4
2
2
Обнаружили ошибку? Выделите ее и нажмите Ctrl + Enter.