【未経験向け】CCNA(200-301)とは? NW未経験が1ヶ月で合格した際に使用した魔法の学習教材、サイトを紹介!!!

Googleアナリティクス(GA4)からPV数等のデータを取得し、スプレッドシートにレポート出力するGASを設定する!

プログラミング

GoogleアナリティクスのAPIを叩いて、日ごとのPV数等をスプレッドシートに出力するGASを作成して定期実行させていたのですが、この度GA4への移行に伴い既存のコードではデータを取得することができなくなりました。

本記事では、GA4対応版のGoogleアナリティクスからPV数等のデータを取得し、スプレッドシートにレポート出力するGASを設定する手順をまとめます。

スポンサーリンク

概要

目的

  • Google アナリティクスから以下のデータを取得し、Google スプレッドシートに出力する。
    • 日付
    • サイトの総PV数
    • アクティブユーザ数
    • 新規ユーザ数
    • エンゲージメント時間(秒)
    • イベント数
    • コンバージョンイベント数

前提条件

  • Google App Script を使用する
  • 当記事を記載するにあたって、GAS、及びGoogleスプレッドシートに関する基礎的な知識は持ち合わせている前提とする

作成手順

作業工程

  1. Google スプレッドシートを作成する
  2. スクリプトエディタにて、「Google Analytics Data API」サービスを追加する
  3. APIを取得するGoogle App Scriptを作成する
  4. テスト実行
  5. 定期実行するように「トリガー」を設定する

1. Google スプレッドシートを作成する

レポート出力用のGoogleスプレッドシートを作成します。(既存のものを使用するのでも可です)

スプレッドシートを作る手順は記事がありふれていますのでここでは割愛します。

2. ツールエディタを起動し、「Google Analytics Data API」サービスを追加する

  1. Google スプレッドシートの上部タブ「拡張機能」→「App Script」からスクリプトエディタを開きます。
  2. スクリプトエディタのサービスの「+」をクリックします。
  1. 「サービスを追加」画面で、「Google Analytics Data API」を選択して、追加ボタンをクリックします。
  1. サービス欄の下に「AnalyticsData」という表示が追加されていることを確認します。

3. Google App Scriptを作成する

  • スクリプトエディタにて以下のスクリプトを作成します。
    • 環境に応じて適時修正してください
    • 修正箇所は「GA4のプロパティID」「データを出力するシート名」に2箇所です
    • ヘッダー用に1行目が空くようにしてます
/**
 * <説明>
 * Google Analytics 4 のプロパティIDのレポートを出力します。
 * <更新日>
 * 2023/04/05
 */
function GetDateFromGa4() {

  // GoogleアナリティクスのプロパティIDを取得する
  /*** 修正箇所① ***/
  const propertyId = 'GA4のプロパティIDを記載する';

  try {
    // 列の項目を設定(項目)
    // 下記の順にメトリックを取得する
    //「日付」「総PV数」「アクティブユーザ数」「新規ユーザ数」「エンゲージメント時間(秒)」「イベント数」「コンバージョンイベント数」
    const metric = AnalyticsData.newMetric();
    metric.name = 'screenPageViews';

    const metric1 = AnalyticsData.newMetric();
    metric1.name = 'userEngagementDuration';

    const metric2 = AnalyticsData.newMetric();
    metric2.name = 'activeUsers';

    const metric3 = AnalyticsData.newMetric();
    metric3.name = 'newUsers';

    const metric4 = AnalyticsData.newMetric();
    metric4.name = 'eventCount';

    const metric5 = AnalyticsData.newMetric();
    metric5.name = 'conversions';

    // 行の項目を指定(指標)
    const dimension = AnalyticsData.newDimension();
    dimension.name = 'date';

    // 取得期間を指定する
    const dateRange = AnalyticsData.newDateRange();
    dateRange.startDate = 'yesterday';
    dateRange.endDate = 'yesterday';
    
    // Google Analytics 4からデータを取得するためのリクエストを作成する
    const request = AnalyticsData.newRunReportRequest();
    request.dimensions = [dimension];
    request.metrics = [metric,metric1,metric2,metric3,metric4,metric5];
    request.dateRanges = dateRange;
    
    // 指定されたGoogle Analytics 4のプロパティからデータを取得する
    const report = AnalyticsData.Properties.runReport(request,
        'properties/' + propertyId);
    if (!report.rows) {
      console.log('No rows returned.');
      return;
    }
    
    // 現在アクティブなシート名「****」を取得する
    /*** 修正箇所② ***/
    const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    const sheet = spreadsheet.getSheetByName('シート名を記載する'); 

    // Analytics Data APIから取得したレポートの結果を整形する
    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];
    });

    // 取得したデータをシートのA列を基準とした最下行に出力する
    var lastRowA = sheet.getRange(sheet.getMaxRows(), 1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
    sheet.getRange(lastRowA + 1, 1, report.rows.length, rows[0].length)
        .setValues(rows);

    // 処理に"成功"した時にコンソールログに出力するメッセージ
    console.log('Report spreadsheet outputs: %s',
        spreadsheet.getUrl());
  
  } catch (e) {

    // 処理に"失敗"した時にコンソールログに出力するメッセージ
    console.log('Failed with error: %s', e.error);
  
  }
}

4. テスト実行

  1. 「手順3.」で作成したスクリプトをテスト実行してみます。
    • 初回実行の場合、Googleからセキュリティ認証を求められますので適時許可をします
  2. 無事以下のようにレポートが出力されていることを確認します。
  1. これでは味気ないので見栄えよくなるようにヘッダーを付けてみます。

それっぽくなりました。シートの細かいあれこれは各自修正してみて下さい。

5. 定期実行するように「トリガー」を設定する

  • 以下の通りトリガー設定をします。
    • トリガー内容: 日次で0~1時に処理を定期実行します。

参考リンク

  • 【GAS】Google Analytics GA4のデータを取得する
    https://next-k.site/blog/archives/2022/05/31/825
  • AppScriptリファレンス – アナリティクス データ サービス
    https://developers.google.com/apps-script/advanced/analyticsdata?hl=ja
  • GASでGA4のAPIの使い方!簡単にGA4指標数値が取得するサンプルコード解説
    https://auto-worker.com/blog/?p=5905#

コメント

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