👏

GAS×Google Analytics Data APIでGA4のデータをスプレッドシートに出力してみた

2023/07/18に公開

Google Analytics Data APIとは

Google アナリティクス 4(GA4)のレポートデータにアクセスすることが可能だそうだ。
2023 年 7 月 1 日以降を持って旧GAの計測が終了する(この記事執筆時点では既に終了している)ため、次のプラットフォームであるGA4のデータをGoogle Analytics Data APIとGASを用いてスプレッドシートに簡単なGA4のデータを出力してみた備忘録。
https://developers.google.com/analytics/devguides/reporting/data/v1?hl=ja

手順

スプレッドシートの準備


「拡張機能」→「Apps Script」を開く。


「サービス」から「Google Analytics Data API」を追加する。

スクリプトの記述

簡単なスクリプトサンプル

function writeDataToSheet() {
  // Google Analytics 4のプロパティIDを入力
  var propertyId = "";

  // Google SheetsのスプレッドシートIDとシート名をそれぞれ入力

  var spreadsheetId = "";
  var sheetName = "";

  var url = "https://analyticsdata.googleapis.com/v1beta/properties/" + propertyId + ":runReport";
  var headers = {
    "Authorization": "Bearer " + ScriptApp.getOAuthToken(),
    "Content-Type": "application/json"
  };

  // データ期間を設定
  var startDate = "2023-04-11";
  var endDate = "today";

  var body = JSON.stringify({
    // データ期間を設定
    "dateRanges": [{
      "startDate": "2023-04-11",
      "endDate": "today"
    }],
    // サンプルはデフォルトチャネルグループのディメンションを設定
    "dimensions":[
      {
      "name":"sessionDefaultChannelGroup"
      }
    ],
    // サンプルはセッション、購入数、総売上を設定
    "metrics": [
      {
      "name": "sessions"
      },
      {
      "name":"ecommercePurchases"
      },
      {
      "name":"totalRevenue"
      }
    ]
  });
  var options = {
    "method": "POST",
    "headers": headers,
    "payload": body
  };

  // Google Analytics Data API (GA4)からデータを取得
  var response = UrlFetchApp.fetch(url, options);
  var data = JSON.parse(response.getContentText());
  var rows = data.rows;   
  var sheetData = [];
  for (var i = 0; i < rows.length; i++) {
    var row = rows[i];
    var rowData = [];
    rowData.push(row.dimensionValues[0].value);
    rowData.push(row.metricValues[0].value); 
    rowData.push(row.metricValues[1].value); 
    rowData.push(row.metricValues[2].value); 
    sheetData.push(rowData);
  }

  // Google Sheetsにデータを書き込む
  var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
  var sheet = spreadsheet.getSheetByName(sheetName);
  sheet.getRange(sheet.getLastRow() + 1, 1, sheetData.length, sheetData[0].length).setValues(sheetData);
}


こんな感じで各チャネルごとにセッション、購入数、総売上の指標が入ってくる。(数値は加工して変更したもの)

API上のディメンションと指標は下記サイトで確認できる。
https://ga-dev-tools.google/ga4/query-explorer/

Discussion