見出し画像

【GAS】GA4の特定のイベント数を毎日スプレッドシートに自動取得してみた

この記事は ウィルゲート Advent Calendar 2022 2 日目の記事です。

最近、自身で運営しているアフィリエイトサイトを運営していく中で「GA4の特定のイベント数取得が自動でできたら良いのにな…」と思っていました。

日次で特定のイベント数をモニタリングしている方も多いかと思いますが、それを毎回GA4にアクセスして見にいくのって面倒なんですよね。。
※僕の場合は基本的に様々な情報をGoogleスプレッドシートで管理しているので、スプレッドシート上に自動で記載してくれると都合が良いです。

GA4の使い方自体の情報はGoogle上にかなり豊富に出てきた印象がありますが、GA4のデータの自動取得に関する情報ってそこまで無い状況なので、僕も構築するのに苦労しました。(僕が非エンジニアなこともありますが…)

少しわかりにくいところもあるかと思いますが、頑張って進めていきましょう!

GAS上で「Google Analytics Data API」を使えるようにする

まずはAPIを使えるようにします。

手順① : GASを立ち上げる
手順② : 「サービス」の「+」をクリックしてください。
手順③ : 「Google Analytics Data API」に選択してください。
手順④ : 追加してください。

これでGAS上で「Google Analytics Data API」を使えるようになりました。

取得したいイベントに合わせてコードを書く

基本的にはサンプルコードを参照いただき、ご自身の取得したい形に変更を加えてください。

今回はランディングページ別の特定イベントの数を取得しています。

サンプルコード

function runReport_cv() {
  const propertyId = '***GA4のプロパティIDを記載***';

  let ss = SpreadsheetApp.getActiveSpreadsheet()
  sheet = ss.getSheetByName("***データを保持したいシート名を記載***")
  sheet.getRange(***データを削除したい範囲を記載***).clearContent();

  for (var i = 0; i < ***取得したいイベント数を記載***; i++) {
    //データを取得開始位置を定義
    let start_row1 = 1;
    let start_row2 = 3;
    let start_column = 3;
    let column = start_column + i * 2;
    let eventName = sheet.getRange(start_row1, column).getValue();

    //データの指標を定義
    const metric = AnalyticsData.newMetric();
    metric.name = 'eventCount';

    //データの項目を定義
    const dimension = AnalyticsData.newDimension();
    dimension.name = 'landingPage';

    //データの指標を絞り込む
    const dimensionFilter = {
      filter: {
        fieldName: 'eventName',
        stringFilter: {
          value: eventName
        }
      }
    }

    //データの取得をリクエスト
    const request = AnalyticsData.newRunReportRequest();
    request.dimensions = [dimension];
    request.metrics = [metric];
    request.dateRanges = dateRange;
    request.dimensionFilter = dimensionFilter;

    const report = AnalyticsData.Properties.runReport(request,
      'properties/' + propertyId);
    if (!report.rows) {
      Logger.log('No rows returned.');
      continue;
    }

    // Append the results.
    const rows = report.rows.map((row) => {
      const dimensionValues = row.dimensionValues.map(
        (dimensionValue) => {
          return dimensionValue.value;
        });
      const metricValues = row.metricValues.map(
        (metricValues) => {
          return metricValues.value;
        });
      return [...dimensionValues, ...metricValues];
    });

    sheet.getRange(start_row2, column, report.rows.length, 2)
      .setValues(rows);
  }
}


※上記のサンプルコードは下記を参考にしています。

サンプルコードの補足

①GA4のプロパティIDの確認方法について

GA4にアクセスして、アナリティクスのロゴの右からサイト名をクリックすると9桁程度の数字があるので、そちらがプロパティIDです。

こちらも確認してみてください。

②イベントの指定方法について

今回のサンプルコードでは下記の手順でイベントを指定しています。

手順① : スプレッドシートに取得したいイベント名を記載
手順② : それらのイベント名をGASで自動取得
※サンプルコードの14行目部分
手順③ : 手順②を基に取得するイベントを指定
※サンプルコードの24行目部分

※ご自身の環境に合わせて、こちらは調整をしてください。

③スプレッドシート上におけるデータの保持方法について

今回の運用方法としては日次でデータを取得できるようにトリガーを設定しておき、1日1回「runReport_cv」が実行されるようになっており、特定のシートへどんどん上書きされるようにしています。

従って、「runReport_cv」の実行時には前日分のデータが残っているので、それをサンプルコードの6行目部分でデータを削除しています。

※ご自身の環境に合わせて、こちらは調整をしてください。

MetricsやDimensionsの一覧について

下記のページにてMetricsやDimensionsの一覧があります。こちらも参照しながら、ご自身の使いやすいようにカスタマイズしてください。


ウィルゲート Advent Calendar 2022」、翌日は夏目さんです!

この記事が気に入ったらサポートをしてみませんか?