Google広告レポートを自動化しよう! スクリプトを使って業務効率UP
「忙しいのに毎日広告レポートを作成するのは大変だな…」と、広告運用者の方であれば一度でも思ったことがあるのではないでしょうか? また、「レポートの数値を見て示唆を出すことを求められているのに、レポート作成に時間が取られてしまって手一杯」という状態の方もいるのではないでしょうか?
求められている本来の仕事をするためには、レポート作成という作業を効率的に行いたいものです。本連載では、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=~」の間です。
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(承認)」をクリックします。
先述した以下のサンプルコードを記述し、右下の「プレビュー」をクリックします。
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(承認)」をクリックします。
右下の「プレビュー」を押下します。「プレビュー」のほかに「実行」というボタンも存在しますが、レポート作成においてはどちらも挙動に違いはありません。
スプレッドシートに「raw」シートが追加され、レポートが出力されました。
※キャプチャは、ダミーデータを使用しています。
さらに、「raw」シートを参照する「日別レポート」のシートには数値が反映されました。これで完成です。
実行スケジュールを設定
スクリプトが上手く動いたのを確認したら、次はレポートを作成する頻度を設定します。スクリプト実行画面に戻り、右下の「閉じる」をクリックします。
スクリプトの一覧ページが表示されました。「日別レポート」行の頻度列の「-(ハイフン)」をクリックします。
実行頻度や時間を設定して「保存」をクリックします。これで、定期的にレポート取得が行われるようになります。
【応用編】もっと知りたい人向けの解説パート
無事に自動処理はできたでしょうか? ここから先はサンプルコードの解説や、コードを書き換えてカスタマイズしてみたい人に向けた応用編です。
スクリプトには何が書いてあったの? サンプルコードの解説
今回の記事で使ったサンプルコードには何が書いてあったのか、分解して解説します。このサンプルコードでは、以下の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 広告スクリプトを活用して、日々のレポート作成作業の効率を改善していきましょう。
ソーシャルもやってます!