- Новое
- Добавить закладку
- #1
Знакомо? Каждый день одни и те же действия: открываешь профили, копируешь данные, переносишь вручную в таблицу
Для этого я написал скрипт, который переносит данные автоматически с аккаунтов в таком виде... 
Скрипт показывает дату обновления статистики, имя аккаунта, а также показы, клики, ctr, cpc, конверсии и траты за сегодня, вчера и все время.
В самой таблице не забудьте включить режим редактирования всем, у кого есть ссылка на таблицу, иначе ничего не будет работать!
Как настроить скрипт за 5 минут.
1) Открой Google Ads → Инструменты → Массовые действия → Скрипты.
2) Нажми «+» → Создать новый скрипт.
3) Удали стандартный код → Вставь наш.
4) Замени 2 строки на свои данные:
5) Нажми «Авторизировать», пройди 2FA.
6) Нажми «Сохранить» и «Выполнить».
6) В разделе скриптов будет столб с названием «Частота» → «Каждый час».
Для этого я написал скрипт, который переносит данные автоматически с аккаунтов в таком виде... 
Скрипт показывает дату обновления статистики, имя аккаунта, а также показы, клики, ctr, cpc, конверсии и траты за сегодня, вчера и все время.
В самой таблице не забудьте включить режим редактирования всем, у кого есть ссылка на таблицу, иначе ничего не будет работать!
Как настроить скрипт за 5 минут.1) Открой Google Ads → Инструменты → Массовые действия → Скрипты.
2) Нажми «+» → Создать новый скрипт.
3) Удали стандартный код → Вставь наш.
4) Замени 2 строки на свои данные:
- spreadsheetUrl → ссылка на свою таблицу.
- accountName → название аккаунта.
5) Нажми «Авторизировать», пройди 2FA.
6) Нажми «Сохранить» и «Выполнить».
6) В разделе скриптов будет столб с названием «Частота» → «Каждый час».
Код:
function main() {
exportToGoogleSheets();
}
function exportToGoogleSheets() {
try {
var spreadsheetUrl = "https://docs.google.com/spreadsheets/d/IDТАБЛИЦЫ/edit";
var accountName = "НАЗВАНИЕ АККАУНТА";
var spreadsheet = SpreadsheetApp.openByUrl(spreadsheetUrl);
var sheet = spreadsheet.getSheetByName("Статистика рекламных кабинетов");
if (!sheet) {
sheet = spreadsheet.insertSheet("Статистика рекламных кабинетов");
}
// Создаём и форматируем заголовки только один раз
if (sheet.getLastRow() === 0) {
var headers = [
"Дата обновления",
"Аккаунт",
"Показы сегодня",
"Клики сегодня",
"CTR сегодня",
"CPC сегодня",
"Конверсии сегодня",
"Расходы сегодня",
"Показы вчера",
"Клики вчера",
"CTR вчера",
"CPC вчера",
"Конверсии вчера",
"Расходы вчера",
"Показы всего",
"Клики всего",
"CTR всего",
"CPC всего",
"Конверсии всего",
"Расходы всего"
];
var headerRange = sheet.getRange(1, 1, 1, headers.length);
headerRange.setValues([headers]);
// Базовое форматирование для всей строки
headerRange
.setFontWeight("bold")
.setFontColor("#ffffff")
.setHorizontalAlignment("center")
.setFontFamily("Arial")
.setFontSize(11);
// Цвета для разных периодов
var colors = {
today: "#34a853", // зелёный (Google-стиль)
yesterday: "#fbbc05", // жёлтый/оранжевый
allTime: "#4285f4" // синий
};
// Сегодня: столбцы 3–8 (C:H)
sheet.getRange(1, 3, 1, 6).setBackground(colors.today);
// Вчера: столбцы 9–14 (I:N)
sheet.getRange(1, 9, 1, 6).setBackground(colors.yesterday);
// Всё время: столбцы 15–20 (O:T)
sheet.getRange(1, 15, 1, 6).setBackground(colors.allTime);
// Первая колонка (Дата) и Аккаунт — нейтральный фон
sheet.getRange(1, 1, 1, 2).setBackground("#5f6368"); // тёмно-серый
// Замораживаем шапку
sheet.setFrozenRows(1);
}
var now = new Date();
var formattedDate = Utilities.formatDate(now, AdsApp.currentAccount().getTimeZone(), "dd.MM.yyyy HH:mm:ss");
function getAccountData(period) {
var report = AdsApp.report(
"SELECT Impressions, Clicks, Ctr, AverageCpc, Conversions, Cost " +
"FROM ACCOUNT_PERFORMANCE_REPORT " +
"DURING " + period
);
var rows = report.rows();
if (rows.hasNext()) {
var row = rows.next();
var impressions = parseInt(row["Impressions"]) || 0;
var clicks = parseInt(row["Clicks"]) || 0;
var costRaw = row["Cost"] || "0";
var cost = parseFloat(costRaw.replace(/,/g, "").replace(/\s/g, "")) || 0;
var conversions = parseFloat(row["Conversions"]) || 0;
var ctr = impressions > 0
? (clicks / impressions * 100).toFixed(2) + "%"
: "0,00%";
var cpc = clicks > 0
? (cost / clicks).toFixed(2).replace(".", ",")
: "0,00";
var costFormatted = cost.toFixed(2).replace(".", ",");
return {
impressions: impressions,
clicks: clicks,
ctr: ctr,
cpc: cpc,
conversions: conversions,
cost: costFormatted
};
}
return {
impressions: 0,
clicks: 0,
ctr: "0,00%",
cpc: "0,00",
conversions: 0,
cost: "0,00"
};
}
var todayData = getAccountData("TODAY");
var yesterdayData = getAccountData("YESTERDAY");
var allTimeData = getAccountData("ALL_TIME");
var rowData = [
formattedDate,
accountName,
todayData.impressions, todayData.clicks, todayData.ctr, todayData.cpc, todayData.conversions, todayData.cost,
yesterdayData.impressions, yesterdayData.clicks, yesterdayData.ctr, yesterdayData.cpc, yesterdayData.conversions, yesterdayData.cost,
allTimeData.impressions, allTimeData.clicks, allTimeData.ctr, allTimeData.cpc, allTimeData.conversions, allTimeData.cost
];
var data = sheet.getDataRange().getValues();
var accountIndex = -1;
for (var i = 1; i < data.length; i++) {
if (data[i][1] === accountName) {
accountIndex = i + 1;
break;
}
}
var range;
if (accountIndex > -1) {
range = sheet.getRange(accountIndex, 1, 1, rowData.length);
range.setValues([rowData]);
} else {
sheet.appendRow(rowData);
var lastRow = sheet.getLastRow();
range = sheet.getRange(lastRow, 1, 1, rowData.length);
}
range.setHorizontalAlignment("center");
} catch (error) {
console.error("Ошибка в скрипте:", error);
throw error;
}
}