chiliad
chiliAd
Google Ads Script: Выгрузка низкочастотных поисковых запросов Google Ads
Для чего этот скрипт
После того как из Google Ads исключили данные о низкочастотных запросах, возникли проблема с поиском новых ключевых и минус-слов. Этот скрипт частично решает это выгрузкой запросов из Google Analytics.

Подробнее описано в статье – How to Find Missing Search Terms for Google Ads.
Инструкция
1. Создайте пустой Google Sheet и вставьте его URL в переменную ss.

2. Включите Analytics в расширенных API Google Ads скрипта.

3. Задайте в переменной viewId идентификатор представления Google Analytics. Его можно найти при помощи Query Explorer.

4. Установите даты начала и конца периода для сбора поисковых запросов.
Формат: yyyy-mm-dd

5. Авторизуйте и запустите скрипт.
Код скрипта
/************************************************************
* Hidden Search Term Report
*
* Version 1.0 
* Date 01.01.2020
*
* Created by: Dmytro Tonkikh
*
* Telegram channel - https://t.me/adwordsscripts
*
* For donates:
* - Patreon - https://www.patreon.com/bePatron?u=43027345
* - Monobank (Visa/MasterCard): https://send.monobank.com.ua/2r4Vye2xV
*************************************************************/

// Insert your SPREADSHEET_URL - create easily with https://sheet.new
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit#gid=0");
//Google Ananlytics View ID - use https://ga-dev-tools.appspot.com/query-explorer/ to find view id
var viewId = 'ga:xxxxxxxx';
// Dates should be in yyyy-mm-dd format.
var startDate = '2020-12-01';
var endDate = '2020-12-31';

function main() {
    setupSpreadsheet();
    getAnalyticsStats();
    getGoogleAdsStats();
}

function getGoogleAdsStats() {
    var sheet = ss.getSheetByName('googleads');
    var REPORTING_OPTIONS = {
        apiVersion: 'v201809',
        includeZeroImpressions: true
    };

    var report = AdsApp.report('SELECT Query, Clicks, CampaignId, AdGroupId FROM SEARCH_QUERY_PERFORMANCE_REPORT DURING ' + [startDate.replace(/-/g, ''), endDate.replace(/-/g, '')].join(','), REPORTING_OPTIONS);

    sheet.clear();
    report.exportToSheet(sheet);
}

function getAnalyticsStats() {

    var retval = [];
    var options = {
        'dimensions': 'ga:adGroup,ga:adMatchedQuery,ga:adwordsCampaignID',
        'include-empty-rows': false,
        'filters': 'ga:users>=0;ga:adMatchedQuery!=(not set)',
        'start-index': 1,
        'max-results': 10000
    }

    var metrics = 'ga:users,ga:adClicks, ga:transactions';
    var headers;
    do {
        var results = Analytics.Data.Ga.get(viewId, startDate, endDate, metrics, options);
        var queryR = results.query;
        if (!headers) {
            headers = results.columnHeaders.map(function(h) { return h.name.replace('ga:', '') });
            retval.push(headers)
            Logger.log(headers);
        }

        retval = retval.concat(results.rows);
        options['start-index'] += results.rows.length

    } while (results.nextLink)

    var sheet = ss.getSheetByName("analytics");
    sheet.clear();

    sheet.getRange(1, 1, retval.length, retval[0].length).setValues(retval);
}

function setupSpreadsheet() {
    var sheets = ['analytics', 'googleads'];
    sheets.forEach(function(s) {
        if (!ss.getSheetByName(s)) {
            ss.insertSheet(s)
        }
    })
}
Поддержите нас на Patreon.
Наши подписчики получают расширенные версии скриптов.
Made on
Tilda