notebook

都内でWEB系エンジニアやってます。

GA4のデータをGoogle Apps Script経由で取得する

個人所有のアカウントはGA4で計測するようになったので今まで使っていたGAの数値を取得するスクリプトも徐々に対応させていく必要があるので調べてみた

まだbetaのようなので内容など変わる可能性があるが現時点でやったことを残しておく

Analytics Data Service  |  Apps Script  |  Google Developers

developers.google.com

ドキュメントは上記

とりあえずGASのコードを乗せる

  • 直近3日分の日毎PV数を取得する
function getReport() {
  const propertyId = '対象のプロパティID';

  const metric = {name: 'eventCount'};
  const dimension = {name: 'date'}

  const dateRange = {
    startDate: '3daysAgo',
    endDate: 'today'
  }

  const dimensionFilter = {
    filter: {
      fieldName: 'eventName',
      stringFilter: {
        value: 'page_view'
      }
    }
  }

  const request = {
    dimensions: [dimension],
    metrics: [metric],
    dateRanges: dateRange,
    dimensionFilter: dimensionFilter
  }

  return AnalyticsData.Properties.runReport(request, `properties/${propertyId}`);
} 

propertyIdはAnalyticsのURLのp~~~~~~~~からpを抜いた数字

実行したら初回は確認画面に飛ばされるので許可する

サンプルでは各種クラスをnewして必要なプロパティをセットしてという手順で書いてたがちょっと気持ち悪かったので書き直した

サンプルコードとしての意味付けの役割しか持っていないのか特に直接連想配列を定義して実行しても問題なく実行できた

  • レスポンス
{ kind: 'analyticsData#runReport',
  rows: 
   [ { dimensionValues: [Object], metricValues: [Object] },
     { metricValues: [Object], dimensionValues: [Object] },
     { metricValues: [Object], dimensionValues: [Object] } ],
  rowCount: 3,
  dimensionHeaders: [ { name: 'date' } ],
  metricHeaders: [ { type: 'TYPE_INTEGER', name: 'eventCount' } ],
  metadata: { currencyCode: 'USD', timeZone: 'Asia/Tokyo' } }
  • reportの各行の中身(抜粋)
{ dimensionValues: [ { value: '20210924' } ],
  metricValues: [ { value: '95' } ] }

AnalyticsDataサービスの使用方法

Google Analytics Data API  |  Google Developers

developers.google.com

上記にエンドポイントの一覧があるので使用するエンドポイントをたどって読んでいけばOK

今回はRunReportを使用するので下記からまた色々と探索していって必要なパラメータを記述していく

Method: properties.runReport  |  Google Analytics Data API

developers.google.com

個人的に良いなと思ったのは日付指定がtodayNdaysAgoといった感じで相対的な指定を行えること

だいたいこの手のスクリプトは現在日時を取得して適当に計算して整形して…という手順を踏んでたがそれがなくても良いのでめちゃくちゃ楽

もしかしたらGA4以前からあったかもしれないが今回始めて気付いた

載せたコードでレポートデータを取得してあとはよしなにSlackに通知するなりSpreadsheetに記録するなり…

まとめ

  • GoogleAnalytics4のレポートデータをGoogleAppsScriptから取得できるようになった
  • BigQueryからでもデータを取得できるので問題ないといえば問題ないのだがGASでサクッと何かする場合とかは楽できるので良い
    • ちなみにBigQueryは前日分のデータをExportだが、GA4のサービスでは当日データが入っているので当日データが欲しい場合はAnalyticsDataを使うと良い
  • 日付範囲を相対的に指定できるのは体験が良い