Перейти до вмісту

Передача даних по витратам GoogleAds у таблицю GoogleSheets

Щоб налаштувати зрозумілу звітність як щоденну, так і в розрізі місяця, отримувати інформацію по витратам на рекламу по кожній рекламній кампанії, формувати звітність по витратам, операційному та чистому прибутку, передача даних з GoogleAds у GoogleSheets стане у нагоді.

Реалізується це простим скриптом, котрий додається безпосередньо у рекламному кабінеті GoogleAds у розділі Інструменти – Масові дії – Скрипти. Створюємо новий й вносимо туди такий код:

function main() {
  const sheetUrl = 'https://docs.google.com/spreadsheets/d/ІДЕНТИФІКАТОР_ТАБЛИЦІ/edit'; // URL таблиці
  const sheet = SpreadsheetApp.openByUrl(sheetUrl).getSheetByName('НАЗВА_ЛИСТА'); // назва листа

  const accountId = AdsApp.currentAccount().getCustomerId();
  const timeZone = AdsApp.currentAccount().getTimeZone();

  const yesterday = new Date(Date.now() - 86400000);
  const formattedDateTable = Utilities.formatDate(yesterday, timeZone, 'dd.MM.yyyy'); // для таблиці
  const formattedDateQuery = Utilities.formatDate(yesterday, timeZone, 'yyyy-MM-dd'); // для запиту

  const report = AdsApp.report(`
    SELECT CampaignName, Cost
    FROM CAMPAIGN_PERFORMANCE_REPORT
    WHERE Date = '${formattedDateQuery}'
  `);

  const rows = report.rows();
  while (rows.hasNext()) {
    const row = rows.next();
    const newRow = [];
    newRow[0] = formattedDateTable;             // A: дата у форматі dd.MM.yyyy
    newRow[1] = row['CampaignName'];            // B: назва кампанії
    
    // Приводимо вартість до правильного числа
    let rawCost = row['Cost'].toString()
      .replace(/\s| /g, '')  // прибираємо всі пробіли та нерозривні пробіли
      .replace(',', '.');    // заміняємо кому на крапку

    let cost = parseFloat(rawCost);

    // Перевірка: якщо після крапки 3 знаки — треба множити на 1000
    if (rawCost.includes('.')) {
      const decimalPart = rawCost.split('.')[1];
      if (decimalPart.length === 3) {
        cost = cost * 1000;
      }
    }

    newRow[2] = cost;                           // C: витрати
    
    newRow[3] = accountId;                      // D: ID акаунту (якщо в одну таблицю вносимо витрати по декільком акаунтам)
    sheet.appendRow(newRow);
  }
}

Далі треба увімкнути щоденне оновлення, щоб дані за вчора вносились у таблицю щоденно:

Результат:

За потреби можна додати більше даних по рекламним кампаніям: покази, кліки, вартість кліку, CTR, тощо.