PPC
1668673202

Как контролировать расходы средств по группам кампаний — скрипт для 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.

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. В коде указано, как с ней работать, но расскажу еще раз чуть подробнее.

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

Если у вас уже есть бот для работы с Google Ads, можно использовать его. Если же токена нет:

  • найдите в Telegram @Botfather;
  • пропишите команду /newbot;
  • следуйте инструкции от Botfather и получите токен вашего бота.

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

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

ID чата пропишите в коде. Это может быть как отдельный чат, так и группа.

В моем случае удобнее получать уведомление в группу. Его видят все члены команды, работающие с проектом, и могут оперативно реагировать на критические изменения в аккаунте.

8. Авторизуйте и сохраните скрипт.

https://images.netpeak.net/blog/sohranit-skript.png

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

Какие узкие места позволяет закрыть скрипт?

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

Модифицированный Spending control позволил оперативно скорректировать рекламу в таких ситуациях:

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

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

Узнайте больше
9
0
2
Обнаружили ошибку? Выделите ее и нажмите Ctrl + Enter.