本文へジャンプ

Google Analytics Data API (GA4)実装方法まとめ [PHP]

Posted by kenta sugiyama

「記事の表示ランキング順に一覧表示したい」
ブログサイトなど多くの記事を扱うサイトでは昔からある話ですね。

これまで、そのようなランキングのデータソースとして、多くの場合はGoogle Analytics、GA(UA)を利用してきましたが、2023年7月に計測を停止(UA無償版)、今後はGoogle Analytics 4(GA4)を使用していく必要があります。

データ取得についても、これまではgoogle-api-php-client(ライブラリ)を使ってGoogle Analyticsのデータを取得してすることが多かったと思いますが、GA4に変わったことにより、Google Analytics Data APIを使用していくことになります。

GAでの実装手順

実装方法が変わることにより実装までの準備も変わってきますがこれまでは、

  1. APIキーを取得する(Google Cloud Console)
  2. クライアントライブラリをローカルにダウンロード
  3. クライアントライブラリをサーバーにアップロード
  4. p12証明書をアップロード

といった手順の準備が必要でした。

GA4での実装手順

対してGAでは以下の手順になります。

  1. APIを有効にする(Google Cloud Platform)
  2. GA4管理画面からサービスアカウントを追加
  3. Google CloudクライアントをComposerでインストール
  4. 認証情報(credential.json)をアップロード

APIを有効にするのが今まではGoogle Cloud Console(またはGoogle Cloud Platform)だったものが、
Google Cloud Platformに一本化されています。
大きく異なるのがクライアントアプリを自身でダウンロード、アップロードする必要があったのものが、
Composerでインストールといった点です。

APIを有効にする(Google Cloud Platform)

Google Analytics Data APIを利用するには、Google Cloud Platform(GCP)で有効にする必要があります。
また、GCPで有効にしたAPIを呼び出すには認証情報が必要となります。
認証情報の種類にはいくつかありますが、今回の例では、サービスアカウントを作成して認証情報(JSONファイル)をダウンロードしている前提となります。

GA4管理画面からサービスアカウントを追加

GA4のプロパティのデータをAPIで扱うため、GA4のアクセス管理画面から、作成したサービスアカウントをユーザとして追加します。

プロパティIDを確認

サービスアカウントをユーザとして追加したプロパティを、APIで扱うにはプロパティIDが必要となります。
後述するGoogle Analytics Data APIの実装手順の方で必要になってきます。

Google CloudクライアントをComposerでインストール

composer require google/analytics-data

Composerを使用できるようにしておく必要がありますが、非常に簡単になりました。

Google Analytics Data APIの実装手順

APIの使用方法もやることは変わらないですが、当然書き方は異なってきます。

require __DIR__ . '/vendor/autoload.php';

use Google\Analytics\Data\V1beta\BetaAnalyticsDataClient;

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/credential.json'); // 取得した認証情報
$propertyId = '*********'; // 対象のGA4プロパティID

$client = new BetaAnalyticsDataClient();
$response = $client->runReport([
  'property' => 'properties/' . $propertyId,
  'dateRanges' => [
    new DateRange([
      'start_date' => '7daysAgo', //対象開始日
      'end_date' => 'today', //対象終了日
    ]),
  ],

  'dimensions' => [
    new Dimension(
      [
        'name' => 'pagePath',
      ]
    ),
    new Dimension(
      [
        'name' => 'pageTitle',
      ]
    ),
  ],
  'dimensionFilter' => new FilterExpression([
    'filter' => new Filter([
      'field_name' => 'pagePath',
      'string_filter' => new StringFilter([
        'match_type' => MatchType::FULL_REGEXP,  // 正規表現
        'value' => "~^/***/***/",  // フィルタする文字列
      ])
    ]),
  ]),
  'limit' => 10,
  'metrics' => [
    new Metric(
      [
        'name' => 'pageViews',
      ]
    ),
  ],
  'orderBys' => [
        new OrderBy([
            'metric' => new MetricOrderBy(
                [
                    'metric_name' => 'pageViews'
                ]
            ),
            'desc' => true
        ])
    ],
]);

$responseがJSON形式で取得できるのであとは表示側で活用していくだけです。
また、

use Google\Analytics\Data\V1beta\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\OrderBy;
use Google\Analytics\Data\V1beta\OrderBy\MetricOrderBy;
use Google\Analytics\Data\V1beta\FilterExpression;
use Google\Analytics\Data\V1beta\Filter;
use Google\Analytics\Data\V1beta\Filter\StringFilter;
use Google\Analytics\Data\V1beta\Filter\StringFilter\MatchType;
use Google\Analytics\Data\V1beta\Metric;

のように使用するディメンション、メトリクスを明示的にインポートする必要があります。

GAとの実装差分

GAでの実装方法でGoogleクライアントのインスタンスを作成する部分などは割愛しますが、

$propertyId = "********";// 対象のGAプロパティID
//取得するデータの組み合わせ
$dimensions = "ga:pagePath,ga:pageTitle";   //ディメンションの設定[,で区切る]
$metrics = "ga:pageviews";  //メトリクス

//オプション
$option = array(
    "dimensions" => $dimensions,
    "filters" => "ga:pagePath=~^/***/***/",  // フィルタする文字列
    "max-results" => 10, // 最大1,000件
    "sort" => "-ga:pageviews"
);
〜
〜
//データの取得
$response = $analytics->data_ga->get("ga:{$propertyId}","7daysAgo","today",$metrics,$option);

使いたいディメンション、メトリクスをStringで列挙すれば良かったものが、
GA4では都度クラスを呼ぶ必要がある。といった点でしょうか。
クレデンシャルの作成、Googleクライアントのインスタンスを作成などを自分でやる必要がなくなりシンプルになったようにも思えます。

GA4での運用

GA4は今までのGA(UA)とは異なる全く別ツールとなります。
そのためツールの使い方や分析視点もUAとは異なるため、今回は今までのコードをGA4に置き換えたものになりますが、今後はGA4に合わせたカスタマイズが必要になってくるでしょう。

GA4ではアクセス管理画面もガラッと変わって戸惑う部分も多いですが、今後も積極的に活用していきたいですね。

Recent Entries
MD EVENT REPORT
What's Hot?