Короткий ответ
Скрипт запускается по расписанию раз в сутки, вычисляет ожидаемую долю расхода на текущую дату месяца, сравнивает с фактической накопленной долей расхода по каждой кампании и отправляет уведомление (email/webhook), если отклонение превышает заданный порог.
Как это работает подробнее
Google Ads Scripts выполняются через встроенный движок Apps Script по расписанию (триггеру), имеют доступ к отчётам кампаний через GAQL-подобные запросы и могут отправлять письма через MailApp или HTTP-запросы через UrlFetchApp к внешнему webhook (например, Slack).
Пример кода
Google Ads Budget Pacing.js
function main() {
var timeZone = AdsApp.currentAccount().getTimeZone();
var now = new Date();
var day = Number(Utilities.formatDate(now, timeZone, "d"));
var year = Number(Utilities.formatDate(now, timeZone, "yyyy"));
var month = Number(Utilities.formatDate(now, timeZone, "M"));
var daysInMonth = new Date(year, month, 0).getDate();
var expectedShare = day / daysInMonth;
var recipient = Session.getActiveUser().getEmail();
var campaigns = AdsApp.campaigns().withCondition("Status = ENABLED").get();
while (campaigns.hasNext()) {
var campaign = campaigns.next();
var stats = campaign.getStatsFor("THIS_MONTH");
var budget = campaign.getBudget().getAmount() * daysInMonth;
if (budget === 0) continue;
var actualShare = stats.getCost() / budget;
var deviation = (actualShare - expectedShare) / expectedShare;
if (Math.abs(deviation) > 0.20) {
MailApp.sendEmail(recipient, "Budget pacing alert: " + campaign.getName(), "Planned: " + expectedShare + "; actual: " + actualShare + "; deviation: " + deviation);
}
}
}Что использовать на практике
- На практике. В реальном скрипте важно обрабатывать кампании с lifetime- и дневным бюджетом отдельно, учитывать часовой пояс аккаунта при расчёте «дня месяца» и не слать повторные алерты по одной и той же кампании чаще, чем раз в сутки.
- Проверка. при отклонении более 20% в любую сторону приходит сообщение с названием кампании, плановой и фактической долей расхода.
Подводные камни
- Частая ошибка. Частая ошибка — жёстко прописывать 30 дней в месяце для всех месяцев или не учитывать уже произведённые изменения бюджета в середине месяца, из-за чего расчёт плана получается неверным.