【Google広告スクリプト】運用データをスプレッドシートに自動取得する方法|AdsApp.report活用

2021年9月29日

Google広告(Google Ads)の運用データを毎日手動でダウンロードするのは手間がかかります。Google広告スクリプトを使えば、インプレッション・クリック数・コンバージョン数などをスプレッドシートに自動で蓄積できます。

本記事ではAdsApp.report()を使ったデータ取得スクリプトの設定手順を解説します。Yahoo広告版はこちらを参照してください。

スプレッドシートの準備

出力先スプレッドシートに「GSNdb」と「GSNtemp」のシートを作成します。

スプレッドシートのシート構成
  • GSNdb:データが蓄積されるシート
  • GSNtemp:一時的なデータ記録用(非表示でも可)

Google広告スクリプトの設定

データを取得したいGoogle広告アカウントを選択し、「ツールと設定」→「スクリプト」を選択します。

Google広告スクリプト設定画面

新しいスクリプトを作成します。

新規スクリプト作成

スクリプトのコード

以下のコードを使用します。

function main() {
    // データシートのスプレッドシートIDを設定
    const FileID = 'スプレッドシートのID'

    const temp_sheet = SpreadsheetApp.openById(FileID).getSheetByName('GSNtemp');
    const db_sheet = SpreadsheetApp.openById(FileID).getSheetByName('GSNdb');

    // 取得したいデータを指定
    var report = AdsApp.report(
        'select CampaignName, Date, Clicks, Conversions, Cost, Impressions ' +
        'from LANDING_PAGE_REPORT ' +
        'during YESTERDAY'
    );

    report.exportToSheet(temp_sheet);
    if (temp_sheet.getLastRow() == 1) {
        return;  // データなしの場合終了
    }
    const values = temp_sheet.getRange(2, 1, temp_sheet.getLastRow() - 1, temp_sheet.getLastColumn()).getValues();
    const ranges = db_sheet.getRange(db_sheet.getLastRow() + 1, 1, values.length, values[0].length);
    ranges.setValues(values);
}

3行目のスプレッドシートのIDを作成したスプレッドシートのIDに変更してください。

取得データのカスタマイズ

クエリのselect部分を変更することで取得するデータを指定できます。

// キャンペーン名・日付・クリック数・コンバージョン数・費用・インプレッション
var report = AdsApp.report(
    'select CampaignName, Date, Clicks, Conversions, Cost, Impressions ' +
    'from LANDING_PAGE_REPORT ' +
    'during YESTERDAY'
);

利用可能なフィールドの一覧はAdsApp公式リファレンスを参照してください。

コンバージョン種別ごとにデータを取得する場合

var report = AdsApp.report('SELECT campaign.name, segments.conversion_action_name, segments.date, metrics.all_conversions FROM campaign WHERE segments.date DURING LAST_30_DAYS');

自動実行の設定

スクリプト一覧画面でスケジュールを設定します。「毎日」「毎時間」など任意の頻度で自動実行できます。

スクリプトスケジュール設定

設定した時間にスクリプトが実行され、スプレッドシートにデータが蓄積されます。

MCCアカウントから複数アカウントのデータを一括取得する方法はこちらの記事を参照してください。

GAS,Javascript

Posted by Next-k