Google Analytics Data API v1 への移行

このドキュメントでは、既存のコードをGoogle Analytics Reporting API v4からGoogle Analytics Data API v1に移行する方法について説明し、2 つの API の主な違いの概要を説明します。

なぜ移行する必要があるのですか

Reporting API v4 はユニバーサル アナリティクスで作成されたプロパティにのみアクセスできるため、アプリケーションが Google アナリティクス 4 プロパティのデータにアクセスする必要がある場合は、Data API v1 を使用するようにコードを更新する必要があります。

前提条件

クイック スタート ガイドを使用して、Data API v1 の基本を理解してください。

入門

まず、Google アナリティクス 4 プロパティを準備し、Data API v1 を有効にして、プラットフォームに適した API クライアント ライブラリを設定します。

Google アナリティクス 4 プロパティを準備する

Data API v1 をサポートするためにコードの移行を開始する前に、 Google アナリティクス 4 プロパティを使用するようにウェブサイトを移行する必要があります。ユニバーサル アナリティクス プロパティの履歴データを Google アナリティクス 4 プロパティにバックフィルすることはできません。

APIを有効にする

このボタンをクリックすると、選択した Google Cloud プロジェクトで Data API v1 が自動的に有効になります。

Google Analytics Data API v1 を有効にする

クライアントライブラリの使用

クライアントライブラリをインストールする

クライアント ライブラリを使用する場合は、プログラミング言語の Data API v1 クライアント ライブラリをインストールする必要があります。

クライアントライブラリを初期化する

Data API v1 クライアント ライブラリは、すぐに使い始められるように設計されています。デフォルトでは、クライアント ライブラリはサービス アカウントの資格情報を自動的に検索しようとします

サービス アカウントの資格情報を提供する簡単な方法は、 GOOGLE_APPLICATION_CREDENTIALS環境変数を設定することです。API クライアントは、この変数の値を使用してサービス アカウント キーの JSON ファイルを検索します。

たとえば、サービス アカウントの資格情報を設定するには、次のコマンドを実行し、サービス アカウントの JSON ファイルへのパスを使用します。

export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

以下は、Data API v1 クライアント ライブラリを初期化するために一般的に使用されるコード スニペットです。

ジャワ

    // Using a default constructor instructs the client to use the credentials
    // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
    try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {

パイソン

    # Using a default constructor instructs the client to use the credentials
    # specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
    client = BetaAnalyticsDataClient()

。ネット

            // Using a default constructor instructs the client to use the credentials
            // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
            BetaAnalyticsDataClient client = BetaAnalyticsDataClient.Create();

PHP

// Using a default constructor instructs the client to use the credentials
// specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
$client = new BetaAnalyticsDataClient();

Node.js

  // Imports the Google Analytics Data API client library.
  const {BetaAnalyticsDataClient} = require('@google-analytics/data');

  // Using a default constructor instructs the client to use the credentials
  // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
  const analyticsDataClient = new BetaAnalyticsDataClient();

環境変数を使用する代わりに、初期化中に認証情報を API クライアント インスタンスに明示的に渡すこともできます。以下は、コード内で資格情報を明示的に渡すことによって Data API v1 クライアント ライブラリを初期化するために使用されるスニペットです。

ジャワ

    // Explicitly use service account credentials by specifying
    // the private key file.
    GoogleCredentials credentials =
        GoogleCredentials.fromStream(new FileInputStream(credentialsJsonPath));

    BetaAnalyticsDataSettings betaAnalyticsDataSettings =
        BetaAnalyticsDataSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
            .build();

    try (BetaAnalyticsDataClient analyticsData =
        BetaAnalyticsDataClient.create(betaAnalyticsDataSettings)) {

パイソン

    # TODO(developer): Uncomment this variable and replace with a valid path to
    #  the credentials.json file for your service account downloaded from the
    #  Cloud Console.
    # credentials_json_path = "/path/to/credentials.json"

    # Explicitly use service account credentials by specifying
    # the private key file.
    client = BetaAnalyticsDataClient.from_service_account_json(credentials_json_path)

。ネット

            /**
             * TODO(developer): Uncomment this variable and replace with a valid path to
             *  the credentials.json file for your service account downloaded from the
             *  Cloud Console.
             *  Otherwise, default service account credentials will be derived from
             *  the GOOGLE_APPLICATION_CREDENTIALS environment variable.
             */
            // credentialsJsonPath = "/path/to/credentials.json";

            // Explicitly use service account credentials by specifying
            // the private key file.
            BetaAnalyticsDataClient client = new BetaAnalyticsDataClientBuilder
            {
              CredentialsPath = credentialsJsonPath
            }.Build();

PHP

/**
 * @param string $credentialsJsonPath Valid path to the credentials.json file for your service
 *                                    account downloaded from the Cloud Console.
 *                                    Example: "/path/to/credentials.json"
 */
function client_from_json_credentials(string $credentialsJsonPath)
{
    // Explicitly use service account credentials by specifying
    // the private key file.
    $client = new BetaAnalyticsDataClient([
        'credentials' => $credentialsJsonPath
    ]);

    return $client;
}

Node.js

  /** TODO(developer): Uncomment this variable and replace with a valid path to
   *  the credentials.json file for your service account downloaded from the
   *  Cloud Console.
   */
  // credentialsJsonPath = '/path/to/credentials.json';

  // Imports the Google Analytics Data API client library.
  const {BetaAnalyticsDataClient} = require('@google-analytics/data');

  // Explicitly use service account credentials by specifying
  // the private key file.
  const analyticsDataClient = new BetaAnalyticsDataClient({
    keyFilename: credentialsJsonPath,
  });

クライアントライブラリを使用しない

クライアント ライブラリなしで Reporting API v4 を使用していて、引き続き Data API v1 で使用したい場合は、資格情報を引き続き使用できます。

Data API によって提供される新しい HTTP エンドポイントと検出ドキュメントを使用する必要があります。

コードがDiscovery ドキュメントを利用している場合は、Data API v1 によって提供される Discovery ドキュメントにコードを更新する必要があります。

エンドポイントを更新した後、JSON クエリを更新するには、Data API の新しいリクエスト構造と概念を理解する必要があります。

コアレポート

利用可能なレポート方法

Reporting API v4 では、そのコア レポート機能にアクセスするための単一メソッドbatchGetが提供されました。 Data API v1 には、選択できるいくつかのコア レポート方法が用意されています。

  • runReportこのメソッドは、Google Analytics イベント データのカスタマイズされたレポートを返します。これはピボット機能をサポートしていないため、単純なレポート クエリに推奨される方法です。
  • runPivotReportこのメソッドは、Google Analytics イベント データのカスタマイズされたピボット レポートを返します。 Reporting API v4 のピボットと同様に、各ピボットはレポート応答に表示されるディメンションの列と行を記述します。
  • バッチRunReportsこれは、単一の API 呼び出しを使用して複数のレポートを生成できるrunReportメソッドのバッチ バージョンです。
  • バッチRunPivotReportsこれは、単一の API 呼び出しを使用して複数のレポートを生成できるrunPivotReportメソッドのバッチ バージョンです。

複数のレポート メソッドを用意する目的は主に利便性であり、一部のメソッドは他のメソッドよりも複雑な機能 (ピボット、バッチ処理) をサポートしていますが、それ以外の点では同様のリクエスト構造を共有しています。

APIスキーマの変更

Reporting API と Data API の両方のレポート機能は、主にそのスキーマ、つまりレポート クエリでサポートされるディメンションとメトリクスによって決まります。ユニバーサル アナリティクスと Google アナリティクス 4 の概念的な違いにより、2 つの API の API スキーマには大きな違いがあります。

  • Data API でサポートされているディメンションと指標の現在のリストをよく理解してください。現在、すべてのディメンションと指標は相互に互換性があるため、互換性のある組み合わせを決定するためにディメンションと指標エクスプローラーを使用する必要はありません。この動作は将来変更される予定です。
  • Google アナリティクス 4 のカスタム ディメンションには、Data API v1 のカスタム ディメンション構文を使用してアクセスできます。これは、Reporting API v4 のga:dimensionXXディメンション スロットの代わりに使用する必要があります。
  • Google アナリティクス 4 のカスタム指標には、Data API v1 のカスタム指標構文を使用してアクセスできます。これは、Reporting API v4 のga:metricXX指標スロットの代わりに使用する必要があります。
  • ユニバーサル アナリティクスの特定のディメンションと指標は、Google アナリティクス 4 にも直接同等のものがあります。詳細については、UA/GA4 API スキーマ同等表を参照してください。
  • Google アナリティクス 4 では、ディメンションと指標の名前にga:接頭辞が付きません。
  • ユニバーサル アナリティクスにある一部の機能は、GA4 ではまだ利用できません(キャンペーン マネージャー、DV360、検索広告 360 の統合など)。この機能が Google アナリティクス 4 に実装されると、Data API がそれをサポートし、新しいディメンションと指標が API スキーマに追加されます。

エンティティ

Google アナリティクス 4 には、ユニバーサル アナリティクスで導入されたビュー (プロファイル) の概念がありません。その結果、Data API v1 レポート リクエストにはviewIdパラメーターが存在しません。代わりに、Data API v1 メソッドを呼び出すときに、リクエスト URL パスに数値の Google アナリティクス 4 プロパティ IDを指定する必要があります。この動作は、レポート エンティティを識別するためにビュー (プロファイル) IDに依存する Reporting API v4 とは異なります。

データAPI v1

Data API v1 の場合、数値の Google アナリティクス 4 プロパティ ID を URL パスに指定する必要があります。

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport

レポート API v4

Reporting API v4 では、レポート クエリの本文にユニバーサル アナリティクス ビュー (プロファイル) ID を指定する必要があります。

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",

    ....

Data API クライアント ライブラリのいずれかを使用している場合は、リクエスト URL パスを手動で操作する必要はありません。ほとんどの API クライアントは、 properties/GA4_PROPERTY_IDの形式の文字列を予期するpropertyパラメータを提供します。クライアント ライブラリの使用例については、クイック スタート ガイドを参照してください。

日付範囲

Reporting API v4 と Data API v1 はどちらも、レポート リクエストのdateRangesフィールドを使用して指定された複数の日付範囲をサポートしています。どちらの API も同じ日付入力形式を共有し、 YYYY-MM-DD形式の絶対日付値、またはyesderdaytoday7daysAgoなどの相対日付を受け入れます。

Data API v1 リクエストは 4 つの日付範囲に制限されていますが、Reporting API v4 では 1 つのレポート リクエストで 2 つの日付範囲が許可されます。

Data API v1 の各dateRangeには、応答内の対応する日付範囲を参照するために使用できるオプションのnameフィールドがある場合があります。 nameを指定しない場合、日付範囲名が自動的に生成されます。

Data API v1 リクエストで複数の日付範囲が指定されている場合、新しいdateRangeディメンションが応答に自動的に追加され、日付範囲名がディメンション値として使用されます。この動作は、日付範囲のデータを各行内のメトリック値のグループとして返​​す Reporting API v4 とは異なることに注意してください。

データ API v1 リクエスト

オプションのnameフィールドは、リクエスト内の各dateRange値に使用されます。この日付範囲名は、応答のdateRangeディメンションの値として使用されます。

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "metrics": [
    {
      "name": "sessions"
    }
  ],
  "dimensions": [
    {
      "name": "country"
    }
  ],
  "dateRanges": [
    {
      "startDate": "2020-01-01",
      "endDate": "2020-01-31",
      "name": "year_ago"
    },
    {
      "startDate": "2021-01-01",
      "endDate": "2021-01-31",
      "name": "current_year"
    }
  ]
}

データ API v1 応答

追加のdateRangeディメンションが応答に自動的に含まれます。 dateRangeディメンション値には、 dateRange.nameフィールドから取得されるか、自動的に生成される日付範囲の名前が含まれます。

....

"dimensionHeaders": [
  {
    "name": "country"
  },
  {
    "name": "dateRange"
  }
],

....

"rows": [

....

  {
    "dimensionValues": [
      {
        "value": "Japan"
      },
      {
        "value": "year_ago"
      }
    ],
    "metricValues": [
      {
        "value": "253286"
      }
    ]
  },
  {
    "dimensionValues": [
      {
        "value": "Japan"
      },
      {
        "value": "current_year"
      }
    ],
    "metricValues": [
      {
        "value": "272582"
      }
    ]
  },

....

レポート API v4 リクエスト

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dateRanges": [
        {
          "startDate": "2020-01-01",
          "endDate": "2020-01-31",
        },
        {
          "startDate": "2021-01-01",
          "endDate": "2021-01-31",
        }
      ],
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ],
      "dimensions": [
        {
          "name": "ga:country"
        }
      ]
    }
  ]
}

レポート API v4 応答

Reporting API v4 では、各日付範囲の値がmetricsフィールド内でグループ化されます。

{
  "dimensions": [
    "Japan"
  ],
  "metrics": [
    {
      "values": [
        "253286"
      ]
    },
    {
      "values": [
        "272582"
      ]
    }
  ]
},

仕分け

Data API v1 レポート クエリの順序付け動作は、Reporting API v4 orderBys orderBysフィールドと同様に、orderBys フィールドを使用して制御できます。

Data API v1 ではOrderBy仕様が変更されました。すべてのOrderByは次のいずれかを含めることができます。

  • DimensionOrderBy は、結果をディメンションの値で並べ替えます。
  • MetricOrderBy は、結果をメトリックの値で並べ替えます。
  • PivotOrderBy : ピボット クエリで使用され、ピボット列グループ内のメトリックの値によって結果を並べ替えます。

Reporting API v4 でサポートされているDELTASMARTHISTOGRAM_BUCKETの順序付けタイプは、Data API v1 には実装されていません。

Data API v1 のOrderType.NUMERIC順序付けタイプは、Reporting API v4 のOrderType.DIMENSION_AS_INTEGER値と同等です。

データ API v1 リクエスト

この例は、国ごとのセッション数をレポートするサンプル クエリを示し、 sessionsメトリックによって行を降順に並べています。

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "metrics": [
    {
      "name": "sessions"
    }
  ],
  "dimensions": [
    {
      "name": "country"
    }
  ],
  "dateRanges": [
    {
      "startDate": "yesterday",
      "endDate": "today"
    }
  ],
  "orderBys": [
    {
      "metric": {
        "metricName": "sessions"
      },
      "desc": true
    }
  ]
}

データ API v1 応答

{
  "dimensionHeaders": [
    {
      "name": "country"
    }
  ],
  "metricHeaders": [
    {
      "name": "sessions",
      "type": "TYPE_INTEGER"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "United States"
        }
      ],
      "metricValues": [
        {
          "value": "510449"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Japan"
        }
      ],
      "metricValues": [
        {
          "value": "283430"
        }
      ]
    },

....

  ],
  "totalSize": 212,
  "metadata": {}
}

レポート API v4 リクエスト

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dateRanges": [
        {
          "startDate": "yesterday",
          "endDate": "today"
        }
      ],
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ],
      "dimensions": [
        {
          "name": "ga:country"
        }
      ],
      "orderBys": [
        {
          "fieldName": "ga:sessions",
          "sortOrder": "DESCENDING"
        }
      ]
    }
  ]
}

レポート API v4 レスポンス

{
"reports": [
  {

....

    "data": {
      "rows": [
        {
          "dimensions": [
            "United States"
          ],
          "metrics": [
            {
              "values": [
                "510449"
              ]
            }
          ]
        },
        {
          "dimensions": [
            "Japan"
          ],
          "metrics": [
            {
              "values": [
                "283430"
              ]
            }
          ]
        },

....

    }
  ]
}

フィルタリング

Data API v1 のDimensionsFilter 句metricFilter句を使用すると、特定のディメンション値または指標値のデータのみを返すように API に要求できます。これは、Reporting API v4 のDimensionsFilterClausesおよびmetricFilterClausesに似ています。

Data API v1 は、Reporting API v4 のfiltersExpression句のようなフィルター式文字列をサポートしません。これらの式は、 dimensionFiltermetricFilter句を使用して書き直す必要があります。

データ API v1 リクエスト

このサンプル リクエストは、ユーザーが訪問した特定のページ パスのセッション数のリストを返します。

DimensionsFilter句は、 /webstore/で始まり、文字列action=a12345含むpagePathディメンション値を持つ行のみを返すために使用されます。

metricFilter句は、 runReportメソッドに対して、 sessionsメトリック値が 1,000 を超える行のみを返すように要求します。

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "metrics": [
    {
      "name": "sessions"
    }
  ],
  "dimensions": [
    {
      "name": "pagePath"
    }
  ],
  "dimensionFilter": {
    "andGroup": {
      "expressions": [
        {
          "filter": {
            "stringFilter": {
              "value": "/webstore/",
              "matchType": "BEGINS_WITH"
            },
            "fieldName": "pagePath"
          }
        },
        {
          "filter": {
            "stringFilter": {
              "matchType": "CONTAINS",
              "value": "action=a12345"
            },
            "fieldName": "pagePath"
          }
        }
      ]
    }
  },
  "metricFilter": {
    "filter": {
      "numericFilter": {
        "value": {
          "int64Value": 1000
        },
        "operation": "GREATER_THAN"
      },
      "fieldName": "sessions"
    }
  },
  "dateRanges": [
    {
      "startDate": "yesterday",
      "endDate": "today"
    }
  ]
}

レポート API v4 リクエスト

このサンプル リクエストは、Data API v1 の例に似ています。ユーザーが訪問した特定のページ パスのセッション数のリストを返します。

DimensionsFilterClausesフィールドは/webstore/で始まり、文字列action=a12345含むpagePathディメンション値を持つ行のみを返すために使用されます。

metricFilterClausesフィールドは、 ga:sessionsメトリック値が 1,000 を超える行のみを返すために使用されます。

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ],
      "dimensions": [
        {
          "name": "ga:pagePath"
        }
      ],
      "metricFilterClauses": [
        {
          "filters": [
            {
              "metricName": "ga:sessions",
              "operator": "GREATER_THAN",
              "comparisonValue": "1000"
            }
          ]
        }
      ],
      "dimensionFilterClauses": [
        {
          "filters": [
            {
              "dimensionName": "ga:pagePath",
              "operator": "BEGINS_WITH",
              "expressions": [
                "/webstore/"
              ]
            },
            {
              "dimensionName": "ga:pagePath",
              "operator": "PARTIAL",
              "expressions": [
                "action=a12345"
              ]
            }
          ],
          "operator": "AND"
        }
      ],
      "dateRanges": [
        {
          "startDate": "yesterday",
          "endDate": "today"
        }
      ]
    }
  ]
}

ページネーション

Data API v1 は、 limitフィールドとoffsetフィールドを使用して、複数のページにまたがる応答結果のページ分割を行いますが、Reporting API v4 はpageTokenpageSizeを使用します。

Data API v1 のピボット リクエストの場合、ピボットオブジェクトのlimitフィールドとoffsetフィールドを使用して、各ピボットのページネーションを個別に実装する必要があります。 limitフィールドはすべてのピボットオブジェクトに必須になりました。

デフォルトでは、Data API v1 はイベント データの最大で最初の 10,000 行を返しますが、Reporting API v4 のデフォルト値は 1,000 行です。

クエリに一致する行の合計数は、Data API v1 の応答のrowCountフィールドを使用して返されます。これは Reporting API v4 と同様です。

データ API v1 リクエスト

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "dateRanges": [

....

  ],
  "metrics": [

....

  ],
  "dimensions": [

....

  ],
  "limit": 5,
  "offset": 15
}

データ API v1 応答

{
  "dimensionHeaders": [

....

  ],
  "metricHeaders": [

....

  ],
  "rows": [

....

  ],
  "rowCount": 228,
}

レポート API v4 リクエスト

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dateRanges": [

....

      ],
      "metrics": [

....

      ],
      "dimensions": [

....

      ],
      "pageSize": 5,
      "pageToken": "5"

    }
  ]
}

レポート API v4 レスポンス

{
  "reports": [
    {

....

      "data": {
        "rows": [

....

        ],

....

        "rowCount": 225,
      },
      "nextPageToken": "15"
    }
  ]
}

メトリクスの集計

Data API v1 は、リクエストでmetricAggregationsフィールドが指定されている場合にのみ集計値を計算します。対照的に、Reporting API v4 は、 HideTotalsフィールドとHideValueRangesフィールドがtrueに設定されていない限り、デフォルトで各メトリックの合計値、最小値、最大値を返します。

データ API v1 リクエスト

集計は、リクエストでmetricAggregationsフィールドが指定されている場合にのみ計算されます。

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "metricAggregations": [
    "TOTAL",
    "MAXIMUM",
    "MINIMUM"
  ],
  "metrics": [
    {
      "name": "sessions"
    }
  ],
  "dimensions": [
    {
      "name": "country"
    }
  ],
  "dateRanges": [
    {
      "startDate": "yesterday",
      "endDate": "today"
    }
  ]
}

データ API v1 応答

集計されたメトリクス行は、応答のtotalsminimum 、およびmaximumフィールドに返されます。集計されたメトリック行の場合、 dimensionValuesフィールドには、 RESERVED_TOTALRESERVED_MAXまたはRESERVED_MINの特別な値が含まれます。

{
  "dimensionHeaders": [

  ....

  ],
  "metricHeaders": [

  ....

  ],
  "rows": [

  ....

  ],
  "totals": [
    {
      "dimensionValues": [
        {
          "value": "RESERVED_TOTAL"
        },
        {
          "value": "RESERVED_TOTAL"
        }
      ],
      "metricValues": [
        {
          "value": "6026053"
        }
      ]
    }
  ],
  "maximums": [
    {
      "dimensionValues": [
        {
          "value": "RESERVED_MAX"
        },
        {
          "value": "RESERVED_MAX"
        }
      ],
      "metricValues": [
        {
          "value": "493655"
        }
      ]
    }
  ],
  "minimums": [
    {
      "dimensionValues": [
        {
          "value": "RESERVED_MIN"
        },
        {
          "value": "RESERVED_MIN"
        }
      ],
      "metricValues": [
        {
          "value": "1"
        }
      ]
    }
  ],

....

}

レポート API v4 リクエスト

国ごとのセッション数を返すリクエストのサンプル。

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dateRanges": [
        {
          "startDate": "yesterday",
          "endDate": "today"
        }
      ],
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ],
      "dimensions": [
        {
          "name": "ga:country"
        }
      ],
    }
  ]
}

レポート API v4 レスポンス

totalsminimums 、およびmaximumsフィールドは、Reporting API v4 応答にデフォルトで存在します。

{
  "reports": [
    {
      "columnHeader": {

         ....

      },
      "data": {
        "rows": [

         ....

        ],

       ....

        "totals": [
          {
            "values": [
              "4493363"
            ]
          }
        ],
        "minimums": [
          {
            "values": [
              "1"
            ]
          }
        ],
        "maximums": [
          {
            "values": [
              "684005"
            ]
          }
        ]

      }
    }
  ]
}

ピボット

Data API v1 は、 runPivotReportおよびbatchRunPivotReportsレポート メソッドでピボット機能をサポートします。

Reporting API v4 では、 batchGetメソッドを使用してレポート クエリにピボットを含めることができます。

Data API v1 と Reporting API v4 ではピボットの実装方法が異なり、各応答行がテーブルの 1 つのセルを表すのに対し、Reporting API v4 では 1 つの応答行が完全なテーブル行を表します。

データAPI v1

以下は、 runPivotReportクエリに対する Data API v1 応答の一部です。ピボット レポートの各セルは個別に返されます。

    "rows": [
      {
        "dimensionValues": [
          {
            "value": "Albania"
          },
          {
            "value": "Edge"
          }
        ],
        "metricValues": [
          {
            "value": "1701"
          }
        ]
      },

レポート API v4

以下は、 batchGetクエリに対する Reporting API v4 応答の一部です。単一の応答行は、 pivotValueRegions内のピボットのすべてのメトリック値を含む完全なテーブル行を表します。

      "data": {
        "rows": [
          {
            "dimensions": [
              "Albania"
            ],
            "metrics": [
              {
                "values": [
                  "42394"
                ],
                "pivotValueRegions": [
                  {
                    "values": [
                      "24658",
                      "17208",
                      "132"
                    ]
                  }
                ]
              }
            ]
          },

Data API v1 では、 runPivotReportまたはbatchRunPivotReportsクエリのすべてのディメンションをピボット オブジェクト内で定義する必要があります。ディメンションは、ピボット クエリのどのピボットでも使用されていない場合、レポートに表示されません。

Data API v1 のピボット列は、Reporting API v4 のdimensionsフィールドではなく、 fieldNamesフィールドを使用して指定されます。

Data API v1 レポート リクエストでディメンション フィルタリングが必要な場合は、リクエスト スコープのディメンション フィルタを使用する必要があります。これは、ピボット オブジェクトでDimensionsFilterClauses仕様を受け入れる Reporting API v4 とは異なります。

Data API v1 のoffsetフィールドは、Reporting API v4 のstartGroupフィールドと機能的に似ています。

Data API v1 の制限フィールドは Reporting API v4 のmaxGroupCountに似ており、レポートのカーディナリティを制限するために使用する必要があります。

Data API v1 は、各ピボットのlimitパラメーターの積が 100,000 を超えない限り、複数のピボットをサポートします。 Reporting API v4 は 1 つのピボット ディメンションのみをサポートします。

デフォルトでは、Data API v1 はレポート内の最初のメトリックによってピボット内のディメンションを順序付けします。この動作は、ピボットの順序が要求されたメトリクスの「合計」の降順によって決定されるReporting API v4 とは異なります。 Data API v1 で並べ替え順序を指定するには、Pivo​​t 仕様のorderBysフィールドを使用します。

データ API v1 リクエスト

この Data API v1 ピボット クエリは、 browserディメンションによってピボットされた、国別のセッション数のレポートを作成します。順序付けとページネーションの設定を保持するために、クエリでorderByslimitoffsetフィールドを使用して同様の Reporting API v4 クエリの動作を再現する方法に注目してください。

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runPivotReport

{
  "dateRanges": [
    {
      "startDate": "2021-01-01",
      "endDate": "2021-01-30"
    }
  ],
  "pivots": [
    {
      "fieldNames": [
        "country"
      ],
      "limit": 250,
      "orderBys": [
        {
          "dimension": {
            "dimensionName": "country"
          }
        }
      ]
    },
    {
      "fieldNames": [
        "browser"
      ],
      "offset": 3,
      "limit": 3,
      "orderBys": [
        {
          "metric": {
            "metricName": "sessions"
          },
          "desc": true
        }
      ]
    }
  ],
  "metrics": [
    {
      "name": "sessions"
    }
  ],
  "dimensions": [
    {
      "name": "country"
    },
    {
      "name": "browser"
    }
  ]
}

データ API v1 応答

{
  "pivotHeaders": [
    {
      "pivotDimensionHeaders": [
        {
          "dimensionValues": [
            {
              "value": "(not set)"
            }
          ]
        },
        {
          "dimensionValues": [
            {
              "value": "Albania"
            }
          ]
        },
        {
          "dimensionValues": [
            {
              "value": "Algeria"
            }
          ]
        }
      ],
      "rowCount": 234
    },
    {
      "pivotDimensionHeaders": [
        {
          "dimensionValues": [
            {
              "value": "Safari"
            }
          ]
        },
        {
          "dimensionValues": [
            {
              "value": "Edge"
            }
          ]
        },
        {
          "dimensionValues": [
            {
              "value": "Opera"
            }
          ]
        }
      ],
      "rowCount": 124
    }
  ],
  "dimensionHeaders": [
    {
      "name": "country"
    },
    {
      "name": "browser"
    }
  ],
  "metricHeaders": [
    {
      "name": "sessions",
      "type": "TYPE_INTEGER"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "(not set)"
        },
        {
          "value": "Safari"
        }
      ],
      "metricValues": [
        {
          "value": "2531"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "(not set)"
        },
        {
          "value": "Edge"
        }
      ],
      "metricValues": [
        {
          "value": "1701"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "(not set)"
        },
        {
          "value": "Opera"
        }
      ],
      "metricValues": [
        {
          "value": "1564"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Albania"
        },
        {
          "value": "Safari"
        }
      ],
      "metricValues": [
        {
          "value": "2531"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Albania"
        },
        {
          "value": "Edge"
        }
      ],
      "metricValues": [
        {
          "value": "1701"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Albania"
        },
        {
          "value": "Opera"
        }
      ],
      "metricValues": [
        {
          "value": "1564"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Algeria"
        },
        {
          "value": "Safari"
        }
      ],
      "metricValues": [
        {
          "value": "237"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Algeria"
        },
        {
          "value": "Edge"
        }
      ],
      "metricValues": [
        {
          "value": "44"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Algeria"
        },
        {
          "value": "Opera"
        }
      ],
      "metricValues": [
        {
          "value": "22"
        }
      ]
    },

....

  ],

....

}

レポート API v4 リクエスト

この Reporting API v4 ピボット クエリは、 ga:browserディメンションによってピボットされた、国別のセッション数のレポートを作成します。

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dateRanges": [
        {
          "startDate": "2021-01-01",
          "endDate": "2021-01-30"
        }
      ],
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ],
      "dimensions": [
        {
          "name": "ga:country"
        }
      ],
      "pivots": [
        {
          "dimensions": [
            {
              "name": "ga:browser"
            }
          ],
          "startGroup": 3,
          "maxGroupCount": 3,
          "metrics": [
            {
              "expression": "ga:sessions"
            }
          ]
        }
      ]
    }
  ]
}

レポート API v4 レスポンス

{
  "reports": [
    {
      "columnHeader": {
        "dimensions": [
          "ga:country"
        ],
        "metricHeader": {
          "metricHeaderEntries": [
            {
              "name": "ga:sessions",
              "type": "INTEGER"
            }
          ],
          "pivotHeaders": [
            {
              "pivotHeaderEntries": [
                {
                  "dimensionNames": [
                    "ga:browser"
                  ],
                  "dimensionValues": [
                    "Edge"
                  ],
                  "metric": {
                    "name": "ga:sessions",
                    "type": "INTEGER"
                  }
                },
                {
                  "dimensionNames": [
                    "ga:browser"
                  ],
                  "dimensionValues": [
                    "Opera"
                  ],
                  "metric": {
                    "name": "ga:sessions",
                    "type": "INTEGER"
                  }
                },
                {
                  "dimensionNames": [
                    "ga:browser"
                  ],
                  "dimensionValues": [
                    "Samsung Internet"
                  ],
                  "metric": {
                    "name": "ga:sessions",
                    "type": "INTEGER"
                  }
                }
              ],
              "totalPivotGroupsCount": 19
            }
          ]
        }
      },
      "data": {
        "rows": [
          {
            "dimensions": [
              "(not set)"
            ],
            "metrics": [
              {
                "values": [
                  "781283"
                ],
                "pivotValueRegions": [
                  {
                    "values": [
                      "6923",
                      "1385",
                      "66"
                    ]
                  }
                ]
              }
            ]
          },
          {
            "dimensions": [
              "Albania"
            ],
            "metrics": [
              {
                "values": [
                  "42394"
                ],
                "pivotValueRegions": [
                  {
                    "values": [
                      "24658",
                      "17208",
                      "132"
                    ]
                  }
                ]
              }
            ]
          },
          {
            "dimensions": [
              "Algeria"
            ],
            "metrics": [
              {
                "values": [
                  "23208"
                ],
                "pivotValueRegions": [
                  {
                    "values": [
                      "19252",
                      "66",
                      "1582"
                    ]
                  }
                ]
              }
            ]
          },

  ....

        ],

  ....

      }
    }
  ]
}

コホート

Data API v1 は、 CohortSpec仕様を使用してコホート レポートを構成します。これは、Reporting API v4 のCohortGroup仕様に似ています。

現在、Data API v1 で使用できるすべてのメトリクスはコホート クエリと互換性がありますが、Reporting API v4では特別なメトリクスのサブセットのみがコホート クエリで使用できます。

Data API v1 コホート リクエストでは、メトリクスcohortActiveUsersが必要です。

Data API v1 と Reporting API v4 はどちらも、1 つのリクエストで最大 12 個のコホートを許可します。

ライフタイム バリュー (LTV) メトリクスは現在、Data API v1 ではサポートされていません。

コホート指標の同等性

Reporting API v4 で定義されたコホート指標のほとんどは、以下のグラフに示すように、Data API v1 で同等の結果を得る式に置き換えることができます。

Reporting API v4 メトリック名Data API v1 メトリック名または式
ga:コホートアクティブユーザーコホートアクティブユーザー
ga:コホートTotalUsersコホート合計ユーザー数
ga:コホート保持率"式": "コホートアクティブユーザー/コホート合計ユーザー"
ga:コホートユーザーあたりの収益"式": "総収益/コホートアクティブユーザー"
ga:コホートユーザーあたりの訪問期間"式": "userEngagementDuration/コホートActiveUsers"
ga:コホートユーザーごとのアプリビュー数"式": "screenPageViews/cohortActiveUsers"
ga:コホートユーザーあたりのページビュー数"式": "screenPageViews/cohortActiveUsers"
ga:cohortユーザーあたりのセッション数"式": "セッション/コホートアクティブユーザー"
ga:コホートユーザーごとの目標完了数"expression": "eventCount/cohortActiveUsers"、目的の目標完了イベントに対応するeventNameによるディメンション フィルターに加えて。

データ API v1 リクエスト

最初のセッションが 2021 年 1 月 3 日の週に発生したユーザーのコホートを構成するサンプル クエリ。アクティブ ユーザーの数とユーザー維持率は、毎週の粒度を使用して 5 週間にわたるコホートに対して計算されます。

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "cohortSpec": {
    "cohorts": [
      {
        "dimension": "firstSessionDate",
        "name": "cohort",
        "dateRange": {
          "startDate": "2021-01-03",
          "endDate": "2021-01-09"
        }
      }
    ],
    "cohortsRange": {
      "startOffset": 0,
      "endOffset": 4,
      "granularity": "WEEKLY"
    }
  },
  "metrics": [
    {
      "name": "cohortActiveUsers"
    },
    {
      "expression": "cohortActiveUsers/cohortTotalUsers",
      "name": "cohortRetentionRate"
    }
  ],
  "dimensions": [
    {
      "name": "cohort"
    },
    {
      "name": "cohortNthWeek"
    }
  ]
}

データ API v1 応答

{
  "dimensionHeaders": [
    {
      "name": "cohort"
    },
    {
      "name": "cohortNthWeek"
    }
  ],
  "metricHeaders": [
    {
      "name": "cohortActiveUsers",
      "type": "TYPE_INTEGER"
    },
    {
      "name": "cohortRetentionRate",
      "type": "TYPE_FLOAT"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "cohort"
        },
        {
          "value": "0000"
        }
      ],
      "metricValues": [
        {
          "value": "4268816"
        },
        {
          "value": "0.999913800857494"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "cohort"
        },
        {
          "value": "0001"
        }
      ],
      "metricValues": [
        {
          "value": "241580"
        },
        {
          "value": "0.056586926213534013"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "cohort"
        },
        {
          "value": "0002"
        }
      ],
      "metricValues": [
        {
          "value": "159390"
        },
        {
          "value": "0.037335003597877253"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "cohort"
        },
        {
          "value": "0003"
        }
      ],
      "metricValues": [
        {
          "value": "131512"
        },
        {
          "value": "0.030804950079453122"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "cohort"
        },
        {
          "value": "0004"
        }
      ],
      "metricValues": [
        {
          "value": "96793"
        },
        {
          "value": "0.022672482610259947"
        }
      ]
    }
  ],
  "totalSize": 5,
  "metadata": {}
}

レポート API v4 リクエスト

最初のセッションが 2021 年 1 月 3 日の週に発生したユーザーのコホートを構成するサンプル クエリ。アクティブ ユーザーの数とユーザー維持率は、 WEEKLY粒度を使用して 5 週間にわたるコホートに対して計算されます。

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dimensions": [
        {
          "name": "ga:cohort"
        },
        {
          "name": "ga:cohortNthWeek"
        }
      ],
      "metrics": [
        {
          "expression": "ga:cohortActiveUsers"
        },
        {
          "expression": "ga:cohortRetentionRate"
        }
      ],
      "cohortGroup": {
        "cohorts": [
          {
            "name": "cohort",
            "type": "FIRST_VISIT_DATE",
            "dateRange": {
              "startDate": "2021-01-03",
              "endDate": "2021-01-09"
            }
          }
        ]
      }
    }
  ]
}

レポート API v4 レスポンス

{
  "reports": [
    {
      "columnHeader": {
        "dimensions": [
          "ga:cohort",
          "ga:cohortNthWeek"
        ],
        "metricHeader": {
          "metricHeaderEntries": [
            {
              "name": "ga:cohortActiveUsers",
              "type": "INTEGER"
            },
            {
              "name": "ga:cohortRetentionRate",
              "type": "PERCENT"
            }
          ]
        }
      },
      "data": {
        "rows": [
          {
            "dimensions": [
              "cohort",
              "0000"
            ],
            "metrics": [
              {
                "values": [
                  "40793",
                  "100.0"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0001"
            ],
            "metrics": [
              {
                "values": [
                  "3883",
                  "9.518789988478416"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0002"
            ],
            "metrics": [
              {
                "values": [
                  "2165",
                  "5.307283112298679"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0003"
            ],
            "metrics": [
              {
                "values": [
                  "1703",
                  "4.174735861544873"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0004"
            ],
            "metrics": [
              {
                "values": [
                  "1484",
                  "3.637879047875861"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0005"
            ],
            "metrics": [
              {
                "values": [
                  "1103",
                  "2.7038952761503197"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0006"
            ],
            "metrics": [
              {
                "values": [
                  "933",
                  "2.28715711028853"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0007"
            ],
            "metrics": [
              {
                "values": [
                  "336",
                  "0.8236707278209496"
                ]
              }
            ]
          }
        ],
        "totals": [
          {
            "values": [
              "52400",
              "16.056676390557204"
            ]
          }
        ],
        "rowCount": 8,
        "minimums": [
          {
            "values": [
              "336",
              "0.8236707278209496"
            ]
          }
        ],
        "maximums": [
          {
            "values": [
              "40793",
              "100.0"
            ]
          }
        ],
        "isDataGolden": true
      }
    }
  ]
}

サンプリング

Data API v1 は常に、非サンプリング データに基づいてコア レポートを構築します。 Reporting API v4 に存在していたsamplingLevelフィールドに相当するものはありません。

データの鮮度

Data API には、レポートのすべてのヒットの処理が終了したかどうかを示すために使用される Reporting API v4 のisDataGoldenフィールドに相当するものはありません。追加の処理により、後日クエリを実行すると、同じレポートが異なる結果を返す可能性があります。

(サポートされていません) セグメント

セグメントは現在、Data API v1 ではサポートされていません。

リアルタイムレポート

Data API v1 のproperties.runRealtimeReportメソッドを使用して、Google アナリティクス 4 プロパティのリアルタイム レポートを生成します。ユニバーサル アナリティクス プロパティのリアルタイム レポート機能は、Google アナリティクス API v3 のdata.realtime.getメソッドによって提供されました。

Data API のリアルタイム レポート スキーマは、 Universal Analytics と Google Analytics 4 の概念的な違いにより、 Analytics API v3 のリアルタイム レポート スキーマとは異なります。

データ API v1 リクエスト

次の例では、Google Analytics API v3 のデフォルトの並べ替え動作を維持するために、オプションのorderBy要素がサンプル Data API v1 クエリに追加されました。

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runRealtimeReport
{
  "dimensions": [{ "name": "country" }],
  "metrics": [{ "name": "activeUsers" }],
  "orderBys": [
     {
       "dimension": {
         "dimensionName": "country"
         }
     }
   ]
}

データ API v1 応答

{
  "dimensionHeaders": [
    {
      "name": "country"
    }
  ],
  "metricHeaders": [
    {
      "name": "activeUsers",
      "type": "TYPE_INTEGER"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": ""
        }
      ],
      "metricValues": [
        {
          "value": "199"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Afghanistan"
        }
      ],
      "metricValues": [
        {
          "value": "4"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Albania"
        }
      ],
      "metricValues": [
        {
          "value": "136"
        }
      ]
    },

    ....

  ],
  "rowCount": 172
}

Google Analytics API v3 リクエスト

GET https://analytics.googleapis.com/analytics/v3/data/realtime?ids=ga:UA_VIEW_ID&metrics=rt:activeUsers&dimensions=rt:country

Google Analytics API v3 の応答

{
  "kind": "analytics#realtimeData",
  "id": "https://www.googleapis.com/analytics/v3/data/realtime?ids=ga:UA_VIEW_ID&dimensions=rt:country&metrics=rt:activeUsers",
  "query": {
    "ids": "ga:UA_VIEW_ID",
    "dimensions": "rt:country",
    "metrics": [
      "rt:activeUsers"
    ],
    "max-results": 10
  },
  "totalResults": 178,
  "profileInfo": {
    "profileId": "XXXXXX",
    "accountId": "XXXXXX",
    "webPropertyId": "UA-XXXXXX",
    "profileName": "View Name",
  },
  "columnHeaders": [
    {
      "name": "rt:country",
      "columnType": "DIMENSION",
      "dataType": "STRING"
    },
    {
      "name": "rt:activeUsers",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    }
  ],
  "totalsForAllResults": {
    "rt:activeUsers": "80351"
  },
  "rows": [
    [
      "(not set)",
      "97"
    ],
    [
      "Afghanistan",
      "2"
    ],
    [
      "Albania",
      "78"
    ],

  ....

  ]
}

(サポートされていません) ユーザー アクティビティ レポート

Data API v1 は現在、Reporting API v4 のuserActivity.searchメソッドのような個々のユーザー アクティビティをレポートする機能をサポートしていません。

API クォータの変更

コアおよびリアルタイム クォータ カテゴリ

クォータの目的で、Data API にはコアとリアルタイムという 2 つのリクエスト カテゴリがあります。コア レポート メソッド ( runReportgetMetadatarunPivotReportbatchRunReportsbatchRunPivotReports ) への API リクエストには、コア クォータが課金されます。 runRealtimeReportメソッドへの API リクエストは、リアルタイム クォータを請求します。

トークンクォータ

プロジェクト クォータに加えて、各リクエストはクエリの複雑さに応じて課金されるプロパティトークン クォータを消費します。 API クォータと制限の詳細については、Data API v1 クォータのドキュメントを参照してください。

コアまたはリアルタイム レポート リクエストでreturnPropertyQuotatrueに設定することで、Analytics プロパティのすべてのクォータの現在の状態を取得できます。クォータの状態はPropertyQuotaで返されます。

(サポートされていません) リソースベースのクォータ

Google アナリティクス 4 のすべてのコア レポートは非​​サンプリング データに基づいているため、 Reporting API v4 で導入されたリソース ベースのクォータは適用できなくなり、Data API v1 レポート リクエストに存在するuseResourceQuotasフィールドに相当するものはありません。

(サポートされていません) 1 日あたりのビュー (プロファイル) あたりのリクエスト数の割り当て

Google アナリティクス 4 にはビューがないため、 requests per view (profile) per dayリクエストの割り当ては Data API v1 には存在せず、トークン割り当てに置き換えられます。