コピペでOK! Google 広告スクリプトを使って日別レポートを自動作成
別のウィンドウが開かれます。ログインアカウントをクリックします。
「Allow(承認)」をクリックします。
右下の「プレビュー」を押下します。「プレビュー」のほかに「実行」というボタンも存在しますが、レポート作成においてはどちらも挙動に違いはありません。
スプレッドシートに「raw」シートが追加され、レポートが出力されました。 ※キャプチャは、ダミーデータを使用しています。
さらに、「raw」シートを参照する「日別レポート」のシートには数値が反映されました。これで完成です。
■ 実行スケジュールを設定
スクリプトが上手く動いたのを確認したら、次はレポートを作成する頻度を設定します。スクリプト実行画面に戻り、右下の「閉じる」をクリックします。
スクリプトの一覧ページが表示されました。「日別レポート」行の頻度列の「-(ハイフン)」をクリックします。
実行頻度や時間を設定して「保存」をクリックします。これで、定期的にレポート取得が行われるようになります。
【応用編】もっと知りたい人向けの解説パート
無事に自動処理はできたでしょうか? ここから先はサンプルコードの解説や、コードを書き換えてカスタマイズしてみたい人に向けた応用編です。 ■ スクリプトには何が書いてあったの? サンプルコードの解説 今回の記事で使ったサンプルコードには何が書いてあったのか、分解して解説します。このサンプルコードでは、以下の3つの処理を行っています。
1. 出力先のスプレッドシートを指定 2. 指定した条件を基にレポートを取得 3. レポートをスプレッドシートに出力
「(2)指定した条件を基にレポートを取得」では、以下のような条件を使います。 ・SELECT文…取得する項目や指標を指定 ・WHERE句…取得するデータをフィルタリングする SELECT文やWHERE句を書き換えることで、取得条件を柔軟に変更することができます。いくつか紹介しましょう。 ■ SELECT文 SELECT文では取得する項目や指標を選択します。 項目 |意味 |備考 segments.date |日付 |サンプルコードで使用 campaign.name |キャンペーン名 |サンプルコードで使用 metrics.impressions |表示回数 |サンプルコードで使用 metrics.clicks |クリック数 |サンプルコードで使用 metrics.cost_micros |費用 |サンプルコードで使用 metrics.conversions |コンバージョン数 |サンプルコードで使用 segments.ad_network_type |ネットワークタイプ | segments.device |デバイス | metrics.all_conversions |すべてのコンバージョン数 | metrics.video_views |視聴回数 | metrics.search_impression_share |検索広告のインプレッションシェア | metrics.content_impression |ディスプレイ広告のインプレッションシェア | 費用を取得するための指標である「metrics.cost_micros」には「micros」が含まれます。「micros」を含む場合、管理画面上で表示される値に0が6つ加わって出力されます。費用が12,345の場合は12345000000と出力されますので、1000000で除する必要があります。 ■ WHERE句 WHERE句では、取得するデータをフィルタリングすることができます。今回は「segments.date DURING THIS_MONTH」と記述しましたので今月の数値のみ取得しています。「THIS_MONTH」の部分は、Google 広告APIが定義している以下の期間に変更することが可能です。 項目 |意味 |備考 THIS_MONTH |今月 |サンプルコードで使用 TODAY |今日 | YESTERDAY |昨日 | LAST_7_DAYS |過去7日 | LAST_BUSINESS_WEEK |先週の月曜日~金曜日 | LAST_MONTH |昨月 | LAST_14_DAYS |過去14日 | LAST_30_DAYS |過去30日 | THIS_WEEK_SUN_TODAY |今週の日曜日~今日 | THIS_WEEK_MON_TODAY |今週の月曜日~今日 | LAST_WEEK_SUN_SAT |先週の日曜日~土曜日 | LAST_WEEK_MON_SUN |先週の月曜日~月曜日 | ここまで紹介した指標と、今回使ったソースのSELECT文とWHERE句を照らし合わせてみましょう。 「(2)指定した条件を基にレポートを取得」部分 var report = AdsApp.report( "SELECT segments.date(日付), campaign.name(キャンペーン名), metrics.impressions(表示回数), metrics.clicks(クリック数), metrics.cost_micros(費用), metrics.conversions(コンバージョン数) FROM campaign(参照するデータはGoogle広告APIにおけるキャンペーンデータ) WHERE segments.date(数値を取得する期間を指定) DURING(期間) THIS_MONTH(今月) ORDER BY segments.date ASC(日付昇順で出力)" ); 言葉にすると、「Google 広告APIにおける今月のキャンペーンデータを参照して日付、キャンペーン名、表示回数、クリック数、費用、コンバージョン数を日付昇順で取得する」と言うことです。 ■ スクリプトを書き換えてみよう! スクリプトに何が書いてあったのか、ざっくり解説しましたので、次は指示を書き換えてカスタマイズしてみましょう。 □ (1)サンプルコードに「キャンペーン名A」「表示回数1回以上」の条件をつけてみる まずは、サンプルコードにキャンペーン名や表示回数でフィルタリングする条件を足してみましょう。 「キャンペーン名はキャンペーンAを参照」「表示回数:1回以上」を加えると、下記のような記述になります。 function main () { var spreadsheet = SpreadsheetApp.openById('スプレッドシートのID'); var sheet = spreadsheet.getSheetByName('raw'); var report = AdsApp.report( "SELECT segments.date, campaign.name, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions FROM campaign WHERE segments.date DURING THIS_MONTH AND campaign.name = 'キャンペーンA' AND metrics.impressions >= 1 ORDER BY segments.date ASC" ); report.exportToSheet(sheet); } このように「AND」でフィルタリングの条件を足していくだけです。 □ (2) 当月1日~昨日までの数値を取得する 次のパターンは少し難易度が上がります。たとえば、日々の進捗確認で当月の1日から昨日までの数値を取得している場合です。この場合、Google 広告APIが定義している期間では対応できないため、下記のようにコードを書き換えます。