【GAS / Google Apps Script 】Google Analytics (GA4)のデータ取得してみる! OAuth2 + Analytics Data API

Google Apps Script

Google Analytics APIでデータ取得してみようかなと

サンプルと言うか viewIdで取得しているものが多くて

GA4は reportingではなく Google Analytics Data API で良いようです^^

Google Cloud Platform / Apps Script 設定

Google Cloud Platform

  • プロジェクトに Analytics Data APIを有効!
  • OAuthの認証用に認証情報追加(ウェブのときはreturn_urlを対象の apps scriptのURL追加
    execとdev両方追加するとテストできます
  • 認証情報のクライアントID、シークレットを使用

Apps Script

  • サービスに Google Analytics Data APIを追加
  • ライブラリはなくてもOKですが使う場合は
    OAuth2 – ライブラリID – 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF

そんな感じで.

認証部分

var accessToken = "";

function doGet(e) {
  var clientId = '1000000.apps.googleusercontent.com'; // 置き換える
  var clientSecret = 'AAAAAA-0000000000000'; // 置き換える
  var redirectUri = 'https://script.google.com/macros/s/AAAAAAAAAAAA-9999999/dev'; // 置き換える

  // 認証コードがURLパラメータに含まれている場合
  if (e.parameter.code) {
    var code = e.parameter.code;

    // アクセストークンを取得する
    var tokenUrl = 'https://oauth2.googleapis.com/token';
    var options = {
      'method': 'post',
      'payload': {
        'code': code,
        'client_id': clientId,
        'client_secret': clientSecret,
        'redirect_uri': redirectUri,
        'grant_type': 'authorization_code'
      }
    };
    
    var response = UrlFetchApp.fetch(tokenUrl, options);
    var json = JSON.parse(response.getContentText());
    accessToken = json.access_token;

    // 取得したアクセストークンを保存したり、API呼び出しに使用したりする
    // ...
    fetchGA4Data();

  // 初回アクセス時、認証ページにリダイレクト
  } else {
    var authorizationUrl = 'https://accounts.google.com/o/oauth2/v2/auth' +
        '?client_id=' + clientId +
        '&redirect_uri=' + redirectUri +
        '&response_type=code' +
        '&scope=https://www.googleapis.com/auth/analytics.readonly';
    return HtmlService.createHtmlOutput('<a target="_blank" href="' + authorizationUrl + '">認証</a>');
  }
}

とりあえず access_tokenだけ外に共有

簡単ですが、これだけで認証リンクから認証できます^^
ここは analytics関係なく共通です。

fetchGA4Data()だけデータ取得です

Analytics Data APIからデータ取得

view id ではなくプロパティIDでデータ取得できます^^v

Google Analytics Data API の概要  |  Google for Developers
Google アナリティクスのレポートとデータをプログラマティックに管理する。

あまり細かく見ていないですがこんな感じでAPI利用できます

accessTokenは上の認証で保存されています。

function fetchGA4Data() {
  var propertyId = 'properties/1234567890'; // GA4プロパティIDを入力
  var url = `https://analyticsdata.googleapis.com/v1beta/${propertyId}:runReport`

  var requestBody = {
    dateRanges: [
      {
        startDate: '7daysAgo',
        endDate: 'today'
      }
    ],
    dimensions: [
      { name: 'country' }, // 地域データを取得する例
    ],
    metrics: [
      { name: 'activeUsers' } // アクティブユーザー数
    ]
  };

  try {
    var response = UrlFetchApp.fetch(url, {
      method: 'post',
      contentType: 'application/json',
      headers: {
        Authorization: 'Bearer ' + accessToken,
      },
      payload: JSON.stringify(requestBody),
    });

    var data = JSON.parse(response.getContentText());
    Logger.log(JSON.stringify(data, null, 2));
  } catch (e) {
    Logger.log('データ取得中にエラーが発生しました: ' + e.message);
  }
}

こんな感じで、国名とアクティブユーザーを取得できました

{
  "dimensionHeaders": [
    {
      "name": "country"
    }
  ],
  "metricHeaders": [
    {
      "name": "activeUsers",
      "type": "TYPE_INTEGER"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "Japan"
        }
      ],
      "metricValues": [
        {
          "value": "169"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Hong Kong"
        }
      ],
      "metricValues": [
        {
          "value": "6"
        }
      ]
    }
]}

お気軽にコメントください!

スパム対応のためコメント認証に数日かかることがありますが、お気軽にコメントいただけると嬉しいです^^

コメント

タイトルとURLをコピーしました