У цій статті розглянемо практичний скрипт для Google Ads, який автоматично надсилає у вибраний чат в Telegram ключові метрики конкурентоспроможності.
Скрипт збирає дані по тому, як ваші оголошення почуваються в аукціоні в порівнянні з конкурентами: доля показів, покази у верхній частині сторінки, абсолютний верх та їхня динаміка. Ви просто отримуєте готовий звіт у Telegram раз на тиждень і бачите, чи не «витискають» вас конкуренти з результатів пошуку.
Нижче — пояснення, кому цей скрипт буде корисним, як він працює, покрокова інструкція з налаштування та готовий код, який можна відразу вставити в акаунт Google Ads.
Скрипт працює з даними по кампаніях у пошуку Google Ads і збирає основні показники конкурентоспроможності (auction insights), після чого надсилає їх у Telegram у вигляді текстового звіту.
Зокрема, у Telegram ви отримуєте:
За бажанням, у коді можна додати додаткові метрики або обмежити вибірку лише певними кампаніями (наприклад, по назві або мітках).
Скрипт особливо добре заходить у таких випадках:
Замість того, щоб раз на тиждень відкривати звіти, фільтрувати дані й робити скріни, ви просто читаєте повідомлення в Telegram та приймаєте рішення.
Покроково процес виглядає так:
@BotFather,
отримуєте BOT_TOKEN.
@userinfobot
або власний тестовий скрипт).
TELEGRAM_BOT_TOKEN
і TELEGRAM_CHAT_ID, зберігаєте.
Після цього раз на тиждень ви отримуватимете повідомлення з коротким зрізом по кампаніях і метриках конкурентоспроможності, без ручної вивантажки звітів.
Якщо Telegram не є основним робочим інструментом, цей же підхід можна адаптувати під інші сервіси:
sendToTelegram() можна використати
MailApp.sendEmail() і надсилати звіт на одну або кілька поштових адрес.
UrlFetchApp.fetch() у форматі JSON.
Логіка одна й та сама: скрипт збирає дані в Google Ads, формує текстовий звіт і відправляє його в потрібний канал комунікації.
Нижче — повністю очищена версія скрипта.
Просто підставте власний telegramBotToken та chatId.
// Скрипт Google Ads: збір метрик конкурентоспроможності за 7 днів
// Токен та chat_id необхідно додати вручну
function main() {
var telegramBotToken = 'PASTE_YOUR_TELEGRAM_TOKEN';
var chatId = 'PASTE_YOUR_CHAT_ID';
var today = new Date();
var lastWeekStart = new Date();
lastWeekStart.setDate(today.getDate() - 7);
var lastWeekEnd = new Date();
lastWeekEnd.setDate(today.getDate() - 1);
var previousWeekStart = new Date();
previousWeekStart.setDate(today.getDate() - 14);
var previousWeekEnd = new Date();
previousWeekEnd.setDate(today.getDate() - 8);
function formatDate(date) {
var year = date.getFullYear();
var month = (date.getMonth() + 1).toString().padStart(2, '0');
var day = date.getDate().toString().padStart(2, '0');
return year + '-' + month + '-' + day;
}
var report = AdsApp.report(
"SELECT Date, Impressions, Clicks, Cost, " +
"SearchImpressionShare, TopImpressionPercentage, SearchAbsoluteTopImpressionShare " +
"FROM CAMPAIGN_PERFORMANCE_REPORT " +
"WHERE AdvertisingChannelType = 'SEARCH' " +
"AND Date >= '" + formatDate(lastWeekStart) + "' " +
"AND Date <= '" + formatDate(lastWeekEnd) + "'"
);
var metrics = getMetrics(report);
var previousReport = AdsApp.report(
"SELECT Date, Impressions, Clicks, Cost, " +
"SearchImpressionShare, TopImpressionPercentage, SearchAbsoluteTopImpressionShare " +
"FROM CAMPAIGN_PERFORMANCE_REPORT " +
"WHERE AdvertisingChannelType = 'SEARCH' " +
"AND Date >= '" + formatDate(previousWeekStart) + "' " +
"AND Date <= '" + formatDate(previousWeekEnd) + "'"
);
var previousMetrics = getMetrics(previousReport);
var message = "???? *Дані пошукових кампаній за останні 7 днів:*\n\n" +
"Доля показів: " + (metrics.impressionsShare).toFixed(2) + "% (" +
comparePercentageChange(metrics.impressionsShare, previousMetrics.impressionsShare) + ")\n" +
"Покази у верхній частині сторінки: " + (metrics.topImpressionPercentage * 100).toFixed(2) + "% (" +
comparePercentageChange(metrics.topImpressionPercentage * 100, previousMetrics.topImpressionPercentage * 100) + ")\n" +
"Покази на абсолютному верху сторінки: " + (metrics.searchAbsoluteTopImpressionShare).toFixed(2) + "% (" +
comparePercentageChange(metrics.searchAbsoluteTopImpressionShare, previousMetrics.searchAbsoluteTopImpressionShare) + ")\n";
sendTelegramMessage(telegramBotToken, chatId, message);
}
function getMetrics(report) {
var metrics = {
impressionsShare: 0,
topImpressionPercentage: 0,
searchAbsoluteTopImpressionShare: 0
};
var rows = report.rows();
var count = 0;
while (rows.hasNext()) {
var row = rows.next();
metrics.impressionsShare += parseFloat(row['SearchImpressionShare']) || 0;
metrics.topImpressionPercentage += parseFloat(row['TopImpressionPercentage']) || 0;
metrics.searchAbsoluteTopImpressionShare += parseFloat(row['SearchAbsoluteTopImpressionShare']) || 0;
count++;
}
if (count > 0) {
metrics.impressionsShare /= count;
metrics.topImpressionPercentage /= count;
metrics.searchAbsoluteTopImpressionShare /= count;
}
return metrics;
}
function comparePercentageChange(current, previous) {
if (previous === 0) {
return "N/A";
}
var diffPercent = ((current - previous) / previous) * 100;
var sign = diffPercent >= 0 ? "+" : "";
return sign + diffPercent.toFixed(2) + "%";
}
function sendTelegramMessage(token, chatId, message) {
var url = "https://api.telegram.org/bot" + token + "/sendMessage";
var payload = {
chat_id: chatId,
text: message,
parse_mode: "Markdown"
};
var options = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}
Залишається лише підставити токен і chat_id — і скрипт готовий до роботи в Google Ads.
Скрипт працює всередині вашого акаунта Google Ads і використовує стандартні можливості Google Ads Scripts. Він не передає жодних паролів чи платіжних даних, лише зчитує статистику кампаній.
Оптимально — раз на 7 днів. Цього достатньо, щоб бачити динаміку, але не засмічувати Telegram постійними повідомленнями. За бажанням можна поставити інший інтервал.
Так, але бажано обмежити вибірку — наприклад, за назвою кампаній або статусом. Це прискорить роботу скрипта і знизить ризики перевищення лімітів.
Скрипт у поточній версії орієнтований на пошукові кампанії. При бажанні його можна модифікувати, але PMax має свої обмеження в деталізації звітів.
Якщо вам заходить такий формат — скрипти, автоматичні звіти в Telegram, кастомні дашборди — це лише мала частина того, що можна витиснути з Google Ads.
Можу допомогти з:
Якщо потрібен — звертайтесь через форму контакту на сайті або пишіть мені напряму. Менше ручної рутини — більше часу на стратегію та гроші клієнта.
Я — Google Ads експерт із понад 6-річним досвідом у PPC-рекламі та аналітиці. Реалізував 135+ повноцінних проєктів у різних нішах і країнах (США, Канада, Австралія, Ізраїль, Польща, Франція, Італія, Саудівська Аравія тощо).
Налаштовую Google Analytics, Google Tag Manager, Google Merchant Center — повністю під ключ.
Я не працюю за шаблонами — глибоко аналізую бізнес, його економіку та воронку, створюю реальні стратегічні рішення, а не просто налаштовую рекламу.
Telegram: @volodymyr920
YouTube: @ppc_expert_v2.0
Більше про мене: t.me/ppc_expert_v2
Входжу у ТОП-15 Freelancehunt у категоріях «Продажі та генерація лідів» та «Інтернет-магазини та eCommerce», і в ТОП-20 у категорії «Контекстна реклама».
Цікавить співпраця? Ви знаєте, що робити