Webサイトの分析をする中、週次でその時点のDAU(Daily Active User)の平均値を記録しておく必要がありました。
今回はDataportalを使用して可視化を行っていたので、スプレッドシートにデータを書き込む必要があります。
②GASでGAのAPIを利用するために「Analytics Reporting API」を有効にします
※画面崩れはご愛嬌
これにより、AnalyticsReporting
というクラス名でapiを呼び出すことができます。
③実装
function myFunction() {
const response = AnalyticsReporting.Reports.batchGet({
reportRequests: [{ // リクエストのBodyを作成
viewId: '********', // GAのビューIDを指定
dateRanges: [{startDate: '2020-04-01',endDate: '2021-03-31'}], // 取得する範囲を指定(今回は2020年度)
metrics: [{expression: 'ga:1dayUsers',}], // 取得する指標
dimensions:[{name: 'ga:date'}] // 取得するディメンション
}]
});
// レスポンスのJSON階層が根深いので頑張って取り出す
const rows = JSON.parse(response).reports[0].data.rows;
var sum = 0;
rows.forEach(row => {sum += parseInt(row.metrics[0].values[0])});
let dau = sum / rows.length; // 平均値を算出
// スプレッドシートに一行追加
const spreadsheet = SpreadsheetApp.openById('スプレッドシートのID');
const sheet = spreadsheet.getActiveSheet();
const date = new Date(); // 取得日時を設定する為にDate型の変数を定義
sheet.appendRow([Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy/MM/dd'), dau]);
}