//$currenturl = get_permalink(); $currenturl = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];;?>
Если вы продвигаете свои товары или услуги через контекстную рекламу, важно не забывать пополнять счёт аккаунтов. В этом поможет настройка уведомлений о текущем балансе на электронную почту и в Telegram. Читайте нашу инструкцию, чтобы отслеживать остаток на аккаунтах Google Ads автоматически, не заходя в аккаунт.
ВАЖНО! Скрипт работает только с аккаунтами, подключенными к My Client Center (MCC) Google Ads по предоплате и на уровне всех аккаунтов.
1. Заходим на уровень всех аккаунтов MCC, в блоке «Настройки» нажимаем на «Скрипты»
2. Копируем скрипт, нажимаем на «Плюс» и вставляем его в открывшемся окне
Скрипт:
var CONFIG = {
// Указать минимальное количество дней до окончания средств на аккаунте для отправки уведомления.
days : 7,
// Указать почты для отправки уведомлений, через запятую, если больше одной
email : [’[email protected]’, ’[email protected]’],
// Указать ники/имена тех, кому отправляется письмо, через запятую, если больше одного
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. Изменяем значения в указанных полях
Чтобы отслеживать сразу несколько аккаунтов, необходимо в интерфейсе Google Ads назначить «Ярлык» аккаунтам, бюджет которых хотите отслеживать.
Вкладку со скриптом не закрывайте, к нему мы еще вернемся.
4. Следующий шаг – это создание бота в Telegram
Набираем в поиске Telegram @botfather и нажимаем «Запустить»
Вводим в сообщение /newbot
Нажимаем на указанное на скриншоте значение
Далее пишем название бота, name_bot, где значение name – это оригинальное имя. Советую называть по проекту, который вы подвигаете посредством контекстной рекламы, если будете отслеживать бюджет 1 аккаунта. Если будете вести отслеживание бюджета нескольких – назовите таким образом, чтобы было понятно, что это бот отслеживания бюджета.
Если пришло данное сообщение, значит имя занято, попробуйте другое
Это сообщение говорит нам о том, что всё получилось, имя свободно.
Далее нажимаем на ссылку и переходим в созданный бот.
Нажимаем кнопку «Запустить» и отправляем любое сообщение:
После этого копируем и вставляем во вкладку браузера данную ссылку, где ТОКЕН – это значение из сообщения @BotFather https://api.telegram.org/botТОКЕН/getUpdates
Переходим по ссылке. Если в браузере не открылось окно с id чата, тогда скопируйте ссылку, еще раз вставьте и перейдите по ней.
Затем копируем id чата
5. Возвращаемся к нашему скрипту, в самом низу нужно будет вставить уже знакомые вам значения:
6. Нажимаем на кнопку «Авторизировать» и сохраняем скрипт. Затем выставляем время, когда хотим, чтобы нам приходили уведомления. Приходить сообщения в Telegram будут с задержкой. Время задержки может достигать 1 час.
7. Так выглядит сообщение об остатке бюджета в Telegram:
Готово! Теперь вы можете отслеживать бюджеты аккаунтов, не заходя в интерфейс Google Ads.
Об авторах:
Эдуард Довнар
Люблю футбол, в свободное время читаю книги, люблю путешествовать по красивым местам, занимаюсь спортом, очень люблю животных.