コピペでOK! スクリプトで広告レポートを自動作成

Google広告レポートを自動化しよう! スクリプトを使って業務効率UP

テンプレートをコピペOK! Google広告スクリプトを使用し、Googleスプレッドシート上に日別レポートを自動作成する方法を紹介します。また、キャンペーン名や表示回数でフィルタリングする条件を追加したり、特定の期間の数値を取得するスクリプトのカスタマイズ方法も併せて解説します!

「忙しいのに毎日広告レポートを作成するのは大変だな…」と、広告運用者の方であれば一度でも思ったことがあるのではないでしょうか? また、「レポートの数値を見て示唆を出すことを求められているのに、レポート作成に時間が取られてしまって手一杯」という状態の方もいるのではないでしょうか?

求められている本来の仕事をするためには、レポート作成という作業を効率的に行いたいものです。本連載では、Google 広告スクリプトを用いたレポート作成を自動化する方法を紹介していきます。コピペするだけでもすぐに使えるものを紹介しますので、Google 広告スクリプトを学んでレポート作成を効率的に行っていきましょう!

今回作成するレポート

広告スクリプトで超時短! レポートを自動で取得&反映

今回紹介するGoogle 広告スクリプトをもちいることで、管理画面へのログインやレポートのダウンロードなど、レポート作成に関わる作業を自動化できます。今回はまず、日別レポートの自動作成をゴールにしましょう。

自動化によって作業を効率化できる

レポート作成のために用意するもの

まずは、Google スプレッドシートとGoogle 広告スクリプトのコードを準備します。今回はスクリプトを試しに使えるよう、テスト用のスプレッドシートを以下に準備しました。必ず自分のGoogleドライブに複製してご利用ください。自社のデータを使う場合、スプレッドシートは事前に複製してください。

●Google スプレッドシート(お試し用)
https://docs.google.com/spreadsheets/d/1_EH1vWLL7taoyIS9MkTy_fI0U1Hg_kR46ms5xVrH7jo/edit?usp=sharing

スプレッドシートの準備ができたら、以下のサンプルコードをコピーします。このとき、()内の「スプレッドシートのID」を書き換えてください。IDはURLの「https://docs.google.com/spreadsheets/d/」から「/edit#gid=~」の間です。

スプレッドシートのIDは「https://docs.google.com/spreadsheets/d/」から「/edit#gid=~」の間
Google 広告スクリプトのサンプルコード
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 ORDER BY segments.date ASC"
  );

  report.exportToSheet(sheet);
}

レポート作成手順

ここから手順を説明していきます。

Google 広告にログインする

まず、レポートを作成したいGoogle 広告アカウントにログインします。

ログイン直後の画面

スクリプト編集ページを開く

左側のメニューの「ツール」をクリックします。

「ツール」をクリック

「一括操作」を選択し、「スクリプト」をクリックします。

「一括操作」をクリックし、「スクリプト」をクリック

スクリプトの一覧ページが表示されました。次に、「青い+ボタン」をクリックします。

「青い+ボタン」をクリック

「新規スクリプト」をクリックします。

「新規スクリプト」をクリック
スクリプトの記述ページ

スクリプトを記述するページが表示されました。

スクリプトを設定

次は、先ほどコピーしたスクリプトを記述します。スクリプト名を「無名のスクリプト」から「日別レポート」に変更しましょう。

「無名のスクリプト」から任意のスクリプト名に書き換える

右上に表示されている「承認」ボタンをクリックします。

「承認」をクリック

別のウィンドウが開かれます。ログインアカウントをクリックします。

使用したいアカウントをクリックしてログイン

「Allow(承認)」をクリックします。

「Allow(承認)」をクリック

先述した以下のサンプルコードを記述し、右下の「プレビュー」をクリックします。

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 ORDER BY segments.date ASC"
  );

  report.exportToSheet(sheet);
}
サンプルコードを記述し、「プレビュー」をクリック

右下の「承認」をクリックします。

「承認」をクリック

別のウィンドウが開かれます。ログインアカウントをクリックします。

使用したいアカウントをクリック

「Allow(承認)」をクリックします。

「Allow(承認)」をクリック

右下の「プレビュー」を押下します。「プレビュー」のほかに「実行」というボタンも存在しますが、レポート作成においてはどちらも挙動に違いはありません。

「プレビュー」をクリック

スプレッドシートに「raw」シートが追加され、レポートが出力されました。
※キャプチャは、ダミーデータを使用しています。

「raw」のシートが追加されている

さらに、「raw」シートを参照する「日別レポート」のシートには数値が反映されました。これで完成です。

「日別レポート」のシートに数値が反映

実行スケジュールを設定

スクリプトが上手く動いたのを確認したら、次はレポートを作成する頻度を設定します。スクリプト実行画面に戻り、右下の「閉じる」をクリックします。

「閉じる」をクリック

スクリプトの一覧ページが表示されました。「日別レポート」行の頻度列の「-(ハイフン)」をクリックします。

「-」をクリック

実行頻度や時間を設定して「保存」をクリックします。これで、定期的にレポート取得が行われるようになります。

実行頻度を設定して「保存」をクリックすれば完了

【応用編】もっと知りたい人向けの解説パート

無事に自動処理はできたでしょうか? ここから先はサンプルコードの解説や、コードを書き換えてカスタマイズしてみたい人に向けた応用編です。

スクリプトには何が書いてあったの? サンプルコードの解説

今回の記事で使ったサンプルコードには何が書いてあったのか、分解して解説します。このサンプルコードでは、以下の3つの処理を行っています。

  1. 出力先のスプレッドシートを指定
  2. 指定した条件を基にレポートを取得
  3. レポートをスプレッドシートに出力
スクリプトの記述の概要

「②指定した条件を基にレポートを取得」では、以下のような条件を使います。

  • 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句を照らし合わせてみましょう。

「②指定した条件を基にレポートを取得」部分
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における今月のキャンペーンデータを参照して日付、キャンペーン名、表示回数、クリック数、費用、コンバージョン数を日付昇順で取得する」と言うことです。

スクリプトを書き換えてみよう!

スクリプトに何が書いてあったのか、ざっくり解説しましたので、次は指示を書き換えてカスタマイズしてみましょう。

①サンプルコードに「キャンペーン名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」でフィルタリングの条件を足していくだけです。

② 当月1日~昨日までの数値を取得する

次のパターンは少し難易度が上がります。たとえば、日々の進捗確認で当月の1日から昨日までの数値を取得している場合です。この場合、Google 広告APIが定義している期間では対応できないため、下記のようにコードを書き換えます。

function main () {

  var today_g = new Date();
  var yesterday_g = today_g;
  yesterday_g.setDate(today_g.getDate()-1);
  var yesterday = Utilities.formatDate(yesterday_g, 'Asia/Tokyo', 'yyyy-MM-dd');
  var startofmonth = Utilities.formatDate(yesterday_g, 'Asia/Tokyo', 'yyyy-MM-01');

  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 BETWEEN '" + startofmonth + "' AND '" + yesterday + "' ORDER BY segments.date ASC"
  );

  report.exportToSheet(sheet);
}
スクリプトの概要

このように、「①前日の日付と月初めの日付を定義」の部分では、「今日の日付を取得→前日の日付を定義→前日の日付を基準にその月の初めの日付を定義」という流れで、レポート期間の初めと終わりの日付を定義しています。

まとめ

上記で紹介したほか「ORDER BY」で出力するデータの行を並び替えることができたり、「LIMIT」で出力する行数を指定することができます。

「LIMIT」は、大規模なアカウントでキーワードレポートや検索語句レポートを取得する場合は行数が多くなり、スプレッドシートが重くなるのを回避できます。

このように、Google 広告スクリプトは柔軟性が非常に高いことに加えて、レポート取得を自動化できることが特長です。Google 広告スクリプトを活用して、日々のレポート作成作業の効率を改善していきましょう。

この記事が役に立ったらシェア!
メルマガの登録はこちら Web担当者に役立つ情報をサクッとゲット!

今日の用語

ファーストビュー
ブラウザーでWebサイトを表示したときにスクロールせずに最初に見える範囲。閲覧者 ...→用語集へ

インフォメーション

RSSフィード


Web担を応援して支えてくださっている企業さま [各サービス/製品の紹介はこちらから]