用途
サイト全体のPVを自動で抜いてくるぐらいなら、スプレッドシートのアドオンでGAのやついれれば良いんですが、
(参照:http://bnbrd.net/automation-by-google-analytics-and-spreadsheet/)
個別のURLのものを取ってくるだとか、イベントラベルのものをとってくるだとかは、いちいち書いてるとReport Configurationがめっちゃ乱雑になってしまうので、一括でとってきちゃいましょう。
完成イメージ
このリストに記事の相対パス(GAが相対パスで見てるので)を書いてあげると
作り方
Analytics APIを有効にしてあげる
画像の順にたどっていった先で、AnalyticsAPIを有効にします。
コード
analytics.gs
function analytics() {
var PROFILE_ID = "ga:hoge"; // GAのID
var END_DATE_OFFSET = 1; // 何日前までのデータとってくるか
var SHEET_URL = "https://docs.google.com/spreadsheets/d/hogehoge"; // 対象のスプレッドシートのURL
var SHEET_ID = "0"; // 対象のシートのid(スプレッドシートの末尾についてるやつ)
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var dsheet = spreadsheet.getSheetByName("hoge"); // URLを書き込むほうのシート名
var nsheet = spreadsheet.getSheetByName("hoge"); // PVを書き出すほうのシート名
var startrow = 2;
var startcol = 1;
var lastrow = dsheet.getLastRow();
var lastcol = 1;
var metrics = "ga:pageviews";
var today = new Date();
var yesterday = new Date(today.getTime() - 24 * 60 * 60 * 1000);
var startDate = "2015-11-01"; // いつの日からの数値取ってくるか
var endDate = Utilities.formatDate(yesterday, Session.getTimeZone(), 'yyyy-MM-dd');
var sheetdata = dsheet.getSheetValues(startrow, startcol, lastrow-1, lastcol);
for ( var i in sheetdata ) {
if ( sheetdata[i][0] == "" ) break;
var fil = "ga:pagePath=~" + sheetdata[i][0];
var optArgs = {
'dimensions': 'ga:date',
'filters': fil,
};
var ga = Analytics.Data.Ga.get(PROFILE_ID, startDate, endDate, metrics, optArgs).rows;
var header = ["日付", sheetdata[i][0]]; // 後から付けてもいい
ga.unshift(header);
for ( var j in ga ) {
ga[j].reverse().pop();
}
var trans_ga = transpose(ga); // 行列変換
nsheet.getRange(2+Number(i), 1, 1, ga.length).setValues(trans_ga);
}
}
// 行列を変換してる(横向きに数値を出してほしいらしいので)
function transpose(a) {
return Object.keys(a[0]).map(function (c) {
return a.map(function (r) {
return r[c];
});
});
}
トリガーのセット
何をしたときに、このスクリプトが叩かれるのかを設定します。
ちなみに
少しいじるとイベントラベルの数字もとってこれます。
(metricsをtotalEventsにして、ラベル名でフィルターかけてます。)