💬

GA4で収集したデータをAPIで取得する

2022/08/08に公開

前置き

gtagで収集したデータをAPIで取得するには、GoogleAnalyticsReporting v4を利用するが、
GA4の場合、GoogleAnalyticsDataApiを利用する。

先方がGA4を使用していたことから、利用できるAPIについていろいろ調査した。
現在(2021/12/07時点)、GA4用のAPIはベータ版のみで、日本語での知見はほとんどなく、英語でもあまり見られないのでAPIを利用したい場合、GA4を利用するべきではない。

Google Analytics Data API

Analytics Data API Overview

Beta
This is a Beta version of the product. While no breaking changes are expected in this phase, pre-GA products may have limited support, and changes to pre-GA products may not be compatible with other pre-GA versions.

orverviewによると、現在ベータ版しか利用できないらしい。

利用方法

API Quickstart
Google Analytics Data for PHP/README.md

ざっくりいうと

  1. GoogleCloudPlatformでGoogle Analytics Data APIを有効にする。
  2. GoogleCloudPlatformでサービスアカウント作成、秘密鍵を取得する。
  3. GoogleAnalyticsの管理画面から、左下の管理>プロパティ>プロパティのアクセス管理より、ユーザー(GoogleCloudPlatformで作成したサービスアカウント)を追加。
  4. composerで必要なモジュールをrequireする。サーバーにphpのモジュール、php-bcmathをインストールする。

phpのサンプルプログラムはAPI Quickstartのページを参照する。

APIを利用してみる

サンプルプログラムを一部書き換えて試してみる。

analyticsDataApi.php

<?php
require 'vendor/autoload.php';

use Google\Analytics\Data\V1beta\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;

/**
 * TODO(developer): Replace this variable with your Google Analytics 4
 *   property ID before running the sample.
 */
$property_id = '{プロパティID}';

// Using a default constructor instructs the client to use the credentials
// specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
$client = new BetaAnalyticsDataClient([
    'credentials' => '{サービスアカウントの秘密鍵}',
]);

// Make an API call.
$response = $client->runReport([
    'property' => 'properties/' . $property_id,
    'dateRanges' => [
        new DateRange([
            'start_date' => '2020-03-31',
            'end_date' => 'today',
        ]),
    ],
    'dimensions' => [
        new Dimension([
            'name' => 'pagePathPlusQueryString',
        ]),
    ],
    'metrics' => [
        new Metric([
            'name' => 'screenPageViews',
        ]),
        new Metric([
            'name' => 'totalUsers',
        ]),
    ]
]);

// Print results of an API call.
print 'Report result: ' . PHP_EOL;
foreach ($response->getRows() as $key => $row) {
    $data[$key]['pagePath'] = $row->getDimensionValues()[0]->getValue();
    $data[$key]['pageViews'] = $row->getMetricValues()[0]->getValue();
    $data[$key]['user'] = $row->getMetricValues()[1]->getValue();
}

print_r($data);

出力

# php analyticsDataApi.php
Report result: 
Array
(
    [0] => Array
        (
            [pagePath] => /
            [pageViews] => 19
            [user] => 4
        )

    [1] => Array
        (
            [pagePath] => /products/detail.php?product_id=11763
            [pageViews] => 8
            [user] => 7
        )
)

参考

使用できる項目一覧

https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema

使用できるDimensionsやMetricsをAPIで取得する

https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/TopLevel/getMetadata

Reporting APIからの移行

https://developers.google.com/analytics/devguides/migration/api/reporting-ua-to-ga4

Reporting APIとData APIの取得できる項目の対応表

https://developers.google.com/analytics/devguides/migration/api/reporting-ua-to-ga4-dims-mets

Discussion