отвечаем
в мессенджерах:

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

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

ВАЖНО! Скрипт работает только с аккаунтами, подключенными к My Client Center (MCC) Google Ads по предоплате и на уровне всех аккаунтов.

Подключение скрипта

1.  Заходим на уровень всех аккаунтов MCC, в блоке «Настройки» нажимаем на «Скрипты»

контекст, инструкция

2. Копируем скрипт, нажимаем на «Плюс» и вставляем его в открывшемся окне

2

Скрипт:

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);

}

3. Изменяем значения в указанных полях

3

Чтобы отслеживать сразу несколько аккаунтов, необходимо в интерфейсе Google Ads назначить «Ярлык» аккаунтам, бюджет которых хотите отслеживать.

4

Вкладку со скриптом не закрывайте, к нему мы еще вернемся.

4. Следующий шаг – это создание бота в Telegram

Набираем в поиске Telegram @botfather и нажимаем «Запустить»

5

Вводим в сообщение /newbot

6

Нажимаем на указанное на скриншоте значение

7

Далее пишем название бота, name_bot, где значение nameэто оригинальное имя. Советую называть по проекту, который вы подвигаете посредством контекстной рекламы, если будете отслеживать бюджет 1 аккаунта. Если будете вести отслеживание бюджета нескольких – назовите таким образом, чтобы было понятно, что это бот отслеживания бюджета.

Если пришло данное сообщение, значит имя занято, попробуйте другое

8

Это сообщение говорит нам о том, что всё получилось, имя свободно.

9

Далее нажимаем на ссылку и переходим в созданный бот.

10

Нажимаем кнопку «Запустить» и отправляем любое сообщение:

11

После этого копируем и вставляем во вкладку браузера данную ссылку, где ТОКЕН – это значение из сообщения @BotFather https://api.telegram.org/botТОКЕН/getUpdates

Переходим по ссылке. Если в браузере не открылось окно с id чата, тогда скопируйте ссылку, еще раз вставьте и перейдите по ней.

12

Затем копируем id чата

13

5. Возвращаемся к нашему скрипту, в самом низу нужно будет вставить уже знакомые вам значения:

14

6. Нажимаем на кнопку «Авторизировать» и сохраняем скрипт. Затем выставляем время, когда хотим, чтобы нам приходили уведомления. Приходить сообщения в Telegram будут с задержкой. Время задержки может достигать 1 час.

15

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

16

Готово! Теперь вы можете отслеживать бюджеты аккаунтов, не заходя в интерфейс Google Ads.

01.08.2019

Об авторах:

Эдуард Довнар

Эдуард Довнар

Люблю футбол, в свободное время читаю книги, люблю путешествовать по красивым местам, занимаюсь спортом, очень люблю животных.