PPC
1668672602

Як контролювати витрати коштів по групах кампаній — скрипт для Google Ads

Я вже розповідав у Netpeak Journal про скрипт Spending Control, що контролює зміни по витратах у рекламному акаунті або наборі кампаній. Програма контролює трати щодня і в разі перевищення ліміту надсилає повідомлення в Telegram. Такий підхід хороший, коли рекламний бюджет виділяється сумарно на обліковий запис, а не окремо на рекламовані вертикалі/категорії. Якщо ж клієнт видає окремі рекламні бюджети на кожну з категорій, і для нього важливо відстежувати зміни витрат саме за категоріями, слід використовувати модифікований скрипт.

Як працює модифікований скрипт Spending control

Для контролю за групами кампаній необхідно спочатку відзначити, які саме кампанії треба перевіряти. В цьому допоможуть мітки Google Ads — спеціальне маркування окремих елементів акаунту. Наприклад, потрібних вам груп кампаній. Список міток, що використовуються для скрипту, зручно зберігати в окремій таблиці Google.

Що робить скрипт:

  • отримує список міток;
  • збирає дані щодо кампаній із кожною з міток у списку;
  • порівнює середні витрати за минулий тиждень із вчорашніми витратами;
  • якщо витрати за вчора виходять за рамки встановлених обмежень, скрипт за допомогою телеграм-бота надсилає повідомлення.

Вся ця процедура працює в циклі, тобто один скрипт по черзі обробляє всі кампанії, позначені ярликом.

Як підключити скрипт контролю по групах кампаній

1. Створіть таблицю з мітками, якими будете відмічати кампанії категорій для контролю витрат.

ярлыки-таблица

2. Створіть мітки в акаунті та промаркуйте ними кампанії. Для цього:

  • позначте кампанії, до яких потрібно додати мітку;
  • натисніть на мітку (Label), створіть нову мітку (якщо її ще немає) та застосуйте її до вибраних кампаній.

создать ярлыки

При цьому назви міток у файлі та в акаунті мають співпадати. Інакше скрипт не працюватиме.

3. В акаунті Google Ads в «Інструментах та налаштуваннях» у розділі «Масові дії» виберіть «Скрипти».

выбирайте “Скрипты”

4. Створіть новий скрипт.

новый скрипт

Зверніть увагу, що цей скрипт створений під новий інтерфейс Google Ads для роботи зі скриптами, у старому він функціонувати не буде.

5. Вставте в робочу область скрипта код:

function main() {
var ss = SpreadsheetApp.openByUrl(
"https://docs.google.com/spreadsheets/d/1_4_vArWYcnu9SCP_r1Kdxp5TpXuQFRLe5kJNTlJr1sE/edit#gid=0"); //Посилання на свою таблицю. За посиланням ви знайдете шаблон файлу

var labels = [];
var nameColumn = 'A'; //Стовпчик з іменем мітки
var min = 0.7; 
// Нижня межа витрат, нижче якої має надсилатися повідомлення. Тут 1 - нормальний рівень витрат, 0.7 - витрати менше норми на 30%
var max = 1.3; 
// Верхня межа витрат, вище якої має надсилатися повідомлення. Тут 1 - нормальний рівень витрат, 1.3 - витрати більше норми на 30%

// Формування масиву міток з кампаніями

var setLabel = function (rowNumber) {

var labelName = ss.getRange(nameColumn + rowNumber).getValue(); 
// Отримання імені мітки

var label = AdsApp.labels().withCondition('Name CONTAINS "' + labelName + '"').get().next(); 
// Отримання інформації за міткою

var campaignIterator = label.campaigns().get(); 
// Отримання кампаній за міткою

Logger.log(labelName)

Logger.log(campaignIterator.totalNumEntities())

var lastWeekCost = 0;

var yesterdayCost = 0;

if (campaignIterator.hasNext()) {

while (campaignIterator.hasNext()) {

var campaign = campaignIterator.next();

lastWeekCost += campaign.getStatsFor('LAST_WEEK_MON_SUN').getCost();

yesterdayCost += campaign.getStatsFor('YESTERDAY').getCost();

}

}

Logger.log("Витрати за тиждень за міткою " + labelName + " складають " + lastWeekCost + ". Вчора витрачено " + yesterdayCost);

var AvSpendsPerDay = lastWeekCost/7; 
// Середні витрати за минулий тиждень

var difference = yesterdayCost/AvSpendsPerDay;

var DifPercentageHi = Math.round((difference-1)*100);

var DifPercentageLo = Math.round((1-difference)*100);

if (difference > max) {

sendTelegramMessage('В акаунті ' + AdsApp.currentAccount().getName() + ' за кампаніями з міткою '+ labelName + ' витрати за вчора більші за середньоденний показник на ' + DifPercentageHi + '%. Необхідно перевірити роботу кампаній.');

}

if (difference < min) {

sendTelegramMessage('В акаунті ' + AdsApp.currentAccount().getName() + ' за кампаніями з міткою '+ labelName +' витрати скоротилися по відношенню до середньоденних на ' + DifPercentageLo + '%. Необхідно перевірити роботу кампаній.');

}

if (ss.getRange(nameColumn + (rowNumber + 1)).getValue()) { 
// Перевірка наявності наступної мітки в таблиці

setLabel(rowNumber + 1) // Виклик функції для наступної мітки

}

return

}

if (ss.getRange(nameColumn + '2').getValue()) { 
// Виклик стартової мітки де "2" - номер рядку в який записана перша мітка
setLabel(2) 
// Виклик стартової мітки де "2" - номер рядку в який записана перша мітка

}

}

function sendTelegramMessage(text) {

var CONFIG = {

// Токен потрібно отримати у BotFather, створивши нового бота

TOKEN: 'your_token_from_BotFather’,

// Напишіть що-небудь в чат вашому боту, після чого перейдіть за посиланням https://api.telegram.org/bot<ТОКЕН>/getUpdates

// у тексті-відповіді знайдіть рядок ..."chat":{"id":123456789,"first_name"... Нам потрібне значення id. Це значення вставляємо замість “your_chat_id”

CHAT_ID: 'your_chat_id'

};

var telegramUrl = 'https://api.telegram.org/bot' + CONFIG.TOKEN + '/sendMessage?chat_id=' + CONFIG.CHAT_ID + '&text=';

var message = encodeURIComponent(text);

var sendMessageUrl = telegramUrl + message;

var options = {

method: 'POST',

contentType: 'application/json'

};

UrlFetchApp.fetch(sendMessageUrl, options);

}

6. Ви можете корегувати верхню та нижню межі витрат у коді. За замовчуванням скрипт реагує на коливання більш ніж 30%.

7. Наприкінці скрипта є окрема функція sendTelegramMessage. У коді вказано, як з нею працювати, але розповім ще раз докладніше.

По-перше, вам знадобиться телеграм-бот і його токен — спеціальний ключ, що дозволяє керувати ботом і підключати його до сторонніх сервісів.

Якщо ж токена немає:

  • знайдіть у Telegram @Botfather;
  • пропишіть команду /newbot;
  • дотримуйтесь інструкції, яку дає Botfather, та отримайте токен вашого бота.

токен бота

Також вам потрібно з’ясувати цифровий код чату, куди будуть надходити повідомлення від скрипта Spending control. Для цього:

  • напишіть новоствореному боту будь-яке повідомлення;
  • після в рядку браузера вкажіть URL https://api.telegram.org/bot<ТОКЕН>/getUpdates, де ТОКЕН — токен вашого бота, отриманий у Botfather;
  • у завантаженому вікні побачите ID чату.

ID чата_2

ID чата пропишіть у коді. Це може бути як окремий чат, так і група.

У моєму випадку зручніше отримувати повідомлення в групу. Його бачать всі члени команди, котрі працюють з проєктом. І ми маємо змогу оперативно реагувати на критичні зміни в акаунті.

8. Авторизуйте і збережіть скрипт.

авторизовать скрипт

сохранить скрипт

9. На сторінці скриптів налаштуйте частоту запуску вашого сценарію. Рекомендую запускати його раз на добу, бажано вранці.

частота запуска скрипта

Які вузькі місця дозволяє закрити скрипт?

Цей скрипт я застосовую у великих акаунтах. Де безліч рекламованих категорій, витрати на які необхідно відстежувати окремо. В умовах чіткого бюджетування це дуже важливо.

У роботі скрипт дозволив оперативно скорегувати рекламу у таких ситуаціях:

  • неконтрольоване перевищення витрат через зміни в рекламних кампаніях, котрі зробили в п’ятницю;
  • масове відхилення оголошень в акаунті, через що витрати різко скоротилися;
  • помилково внесені низькі ставки, через що скоротилися витрати на рекламу.

Завдяки скрипту і ви, починаючи свій робочий день, знатимете, які облікові записи вимагають уваги. І найголовніше, ваші акаунти будуть під щоденним контролем.

Дізнатися більше
45
2
5

Підпишіться

на найкориснішу розсилку з інтернет-маркетингу
Cookies policy
Коли ви переглядаєте цей сайт, ви погоджуєтесь з нашими правилами конфіденційності — Погодитися