こんにちは、井下です。
前回はGoogle Apps Scriptを利用して、Google AnalyticsのデータをSpreadsheetに出力してみました。
これで画面上からは見られなかった、3つ以上のディメンションで絞り込んだデータを見られるようになりましたが、前回のサンプルコードのままだと少し不便なところがあります。
例えば…
- データ取得範囲を決める開始日・終了日が固定値なので、自動で実行しても意味がない
- 出力先が常に同じシートなので、実行するたびに上書きされてしまう
- ヘッダーがないので、ぱっと見てどの行が何のデータなのか分かりづらい
- 検索キーワードが"not set"になっているデータなど、不要なデータは出力させないようにしたい
今回は上記の4点について、修正を行ったサンプルを書いていきます。
ちなみに、前回書いたサンプルコードはこちらです。
function analytics() {
var PROFILE_ID = "ga:zzzzzzzz";
var metrics = "ga:sessions, ga:percentNewSessions, ga:newVisits";
var optArgs = {
'dimensions': 'ga:keyword, ga:region, ga:networkDomain',
};
var startDate = "2015-06-01";
var endDate = "2015-06-29";
var ga = Analytics.Data.Ga.get(PROFILE_ID, startDate, endDate, metrics, optArgs).rows;
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, ga.length, ga[0].length).setValues(ga);
}
※赤字部分は変更必須、青字部分は任意の値に変更する前提です
修正1 開始日・終了日を可変にする
Google AnalyticsとGoogle Apps Scriptの連携させる意義として、定期実行における自動化ができることを前回挙げています。
そのためにはデータの取得範囲の開始日・終了日を実行日に応じて可変にすることと、Google Apps Scriptのトリガー機能の設定が必要になります。
まず、下記のサンプルコードによって、開始日・終了日を実行日に応じて可変にします。
function analytics() {
var PROFILE_ID = "ga:zzzzzzzz";
var START_DATE_OFFSET = 8;
var END_DATE_OFFSET = 1;
var metrics = "ga:sessions, ga:percentNewSessions, ga:newVisits";
var optArgs = {
'dimensions': 'ga:keyword, ga:region, ga:networkDomain',
};
var nowDate = new Date();
var startDate = dateFormat(new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate() - START_DATE_OFFSET));
var endDate = dateFormat(new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate() - END_DATE_OFFSET));
var ga = Analytics.Data.Ga.get(PROFILE_ID, startDate, endDate, metrics, optArgs).rows;
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, ga.length, ga[0].length).setValues(ga);
}
function dateFormat(date) {
return date.getFullYear() + '-' + ('0' + (date.getMonth() + 1) ).slice(-2) + '-' + ('0' + date.getDate()).slice(-2);
}
サンプルコードでは、「1週間分のデータを抽出」する例としています。
なお、データの日付範囲を変更したい場合は、"START_DATE_OFFSET"および"END_DATE_OFFSET"の値を変更してください。
"START_DATE_OFFSET"は日付範囲の開始日が実行日の何日前か、"END_DATE_OFFSET"は日付範囲の終了日が実行日の何日前かを決めています。
修正2 実行タイミングの自動化
次にトリガー機能の設定です。
Google Apps Scriptには定期実行や、特定の動作がされたときのみ実行するトリガー機能が用意されています。
トリガー機能の設定はGoogle Apps Scriptの[リソース]>[現状のプロジェクトのトリガー]から行います。
最初は何も設定されていないので、ダイアログに表示されているリンクをクリックして設定画面を開きます。