Google Analytics Data API(GA4)を使ってみる(PHPサンプル付き)

みなさん、こんにちは。GMOインターネットグループ株式会社の斉藤です。

・・・、私はいつも上記のご挨拶でブログを書き始めますが、ちょっと変わりましたね。お気づきになりましたか?
弊社は2022年9月1日付けで商号変更いたしました。

GMOインターネット、「GMOインターネットグループ株式会社」に商号変更
https://www.gmo.jp/news/article/7964/
 -旧: GMOインターネット株式会社
 -新: GMOインターネットグループ株式会社

引き続き、GMOインターネットグループ株式会社をよろしくお願いいたします。

Google アナリティクス4とAPI

前回の「CryptoName byGMOでNFTドメインを取得しよう」と言う記事でご紹介したCryptoName byGMOですが、サイトへのアクセスを調べるためにGoogle アナリティクス4(GA4)を導入しています。これは以前からあるユニバーサルアナリティクス(いわゆるグーグルアナリティクス)の置き換えに当たるものです。

GA4にはそのデータにアクセスするためのAPIが用意されていて、Google Analytics Data API(GA4)と呼ばれるものです。このAPIを利用するとGA4に関する様々なパラメータが取得できるので、マーケティング分析などの強い味方になります。

現在APIで実行可能なのはレポートの作成のみです。レポートの作成というのは、GA4上のデータをいろいろ組み合わせて一つのレポートを作成し、APIの出力結果として受け取るものです。

早速使ってみましょう。今回はPHPを利用します。

サンプルコードを実行してみよう

1. GCPアカウントの作成

Google Analytics Data APIはGoogle Cloud Platform(GCP)のサービスの一つです。GCPのアカウントをお持ちでない方はまずアカウントを作成する必要があります。既存のGoogleアカウントを連携できるので、お持ちであればすぐです。

https://console.cloud.google.com/apis/dashboard?hl=ja

2. APIを有効にする

次に、オフィシャルドキュメントのQuick Startにある以下の[Enable the Google Analytics Data API v1]ボタンからGCPのプロジェクトを作成します。これを実行するとGCPアカウントにテストプロジェクトが作成されて、APIの実行準備が整います。GCPに慣れているのであれば自分でプロジェクトを作成してもOKです。

この後、自動的に「credentials.json」というファイルがダウンロードされます。このファイルは認証ファイルです。重要なので忘れずに保存するようにしましょう。

https://developers.google.com/analytics/devguides/reporting/data/v1/quickstart-client-libraries

3. GA4にGCPサービスアカウントを設定する

一つ前のステップでダウンロードしたファイルを開くと、quickstart@PROJECT-ID.iam.gserviceaccount.com のようなメールアドレスに似た文字列があります。これを以下の手順でGA4のユーザーとして追加します。権限は閲覧者のみで構いません。

GA4の「管理」を開きます
「アカウントのアクセス管理」を開きます

右上のボタンからユーザーを追加します

4. Google Analytics Data API を実行する

これでGoogle Analytics Data API を実行する準備が整いましたので、実際にスクリプトを書いていきましょう。
2. で保存した credential.json もスクリプトと同じフォルダに入れておきます。

PHPでAPIを実行する場合、オフィシャルのライブラリがあるのでこれを利用します。まず以下のようにcomposerをインストールします(インストール済みの場合はスキップします)。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

そしてGoogle Analytics Data APIのライブラリをインストールします。

./composer.phar require google/analytics-data

ライブラリをロードするには、composerのお約束で vendor/autoload.php をrequireします。ライブラリのクラス群はGoogle\Analytics\Data\V1beta\ 名前空間の下にありますので、これらを必要に応じてuseします。

また、GA4にアクセスするための認証情報をセットする必要があります。これは環境変数で行いますが、PHPの場合はputenv関数を使うとスクリプト内から環境変数をセットできます。

<?php

require 'vendor/autoload.php';

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/ga4-api-******-**********.json');

use Google\Analytics\Data\V1beta\BetaAnalyticsDataClient;
...

最初に触れたとおり、現在APIで実行できるのはレポートの作成のみです。早速作ってみましょう。

レポートの作成はGA4の「プロパティ」に対して実行されます。プロパティにはIDが割り振られていて、それを確認します。IDは「管理」のページなどにあります。

プロパティID

これらを踏まえ実際のスクリプトを記述していきますが、やることはとても単純で、BetaAnalyticsDataClient を作成してrunReport()を実行するだけです。ただ渡すパラメータが少し複雑なので、実際にコードを見てもらう方が理解が早いかと思います。

試しに日付毎のセッション数をレポートにしてみたいと思います。

<?php

require 'vendor/autoload.php';

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

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/ga4-api-******-**********.json');

$client = new BetaAnalyticsDataClient();
$response = $client->runReport([
    'property' => 'properties/320171287',
    'dateRanges' => [
        new DateRange([
            'start_date' => '7daysAgo',
            'end_date' => 'today',
        ]),
    ],

    'dimensions' => [
        new Dimension(
            [
                'name' => 'date',
            ]
        ),
    ],

    'metrics' => [
        new Metric(
            [
                'name' => 'sessions',
                ]
            ),
    ]
]);

foreach ($response->getRows() as $row) {
    foreach($row->getDimensionValues() as $v) {
        print "dimension: " . $v->getValue() . "\t";
    }

    foreach ($row->getMetricValues() as $v) {
        print "metric:" . $v->getValue() . "\n";
    }
}

出力例は以下です(数値はダミーです)。

dimension: 20220905     metric:99999
dimension: 20220906     metric:99999
dimension: 20220901     metric:99999
dimension: 20220831     metric:99999
dimension: 20220902     metric:99999
dimension: 20220904     metric:99999
dimension: 20220903     metric:99999

“dateRange”, “dimensions”, “metrics”でレポートに出力される項目を決めることができます。今回使ったdate, sessions以外にも、GA4でおなじみのディメンションを使うことができます。一覧が以下のスキーマドキュメントにありますので確認しましょう。

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

またrunReport()関数に渡せるパラメータもいろいろあります。今回私は実際の業務で dimensionFilter を使いました。これは名前の通りディメンションを絞り込んで出力させるもので、たとえばURL毎のセッション数を出すときに、特定の文字列を含むURLだけを抽出することができたりします。これは以下のようなコードになります。

$client->runReport([
    "dimensionFilter" =>  new FilterExpression([
        'and_group' => new FilterExpressionList([
            'expressions' => [
                new FilterExpression([
                    'filter' => new Filter([
                        'field_name' => 'landingPage',
                        'string_filter' => new StringFilter([
                            'match_type' => MatchType::BEGINS_WITH,  // 前方一致
                            'value' => '/hogehoge',  // フィルタする文字列
                        ])
                    ]),
                ]),
            ],
        ]),
    ]),
...

パラメータの一覧は以下のページで見ることができます。

https://developers.google.com/analytics/devguides/reporting/data/v1/basics

おわりに

ユニバーサルアナリティクスの提供終了がアナウンスされてからしばらく経ちました(提供終了は2023年7月1日)ので、Googleアナリティクス4への移行も進んでいるのではないでしょうか。
Googleアナリティクス4はマーケティングツールではありますが、Webやアプリに関わるエンジニアにとっても有用なツールです。自分が関わっているプロダクトに関する数字を把握するのは大事です。

Google Analytics Data APIを使うとスクリプトを活用した高度な分析が行えるでしょう。
またレポートのオートメーションもやりやすくなります。

PHPはWeb系エンジニアで書ける人が多いので、そのスキルをそのままデータ分析に生かせるメリットは大きいでしょうか。この記事とサンプルコードがお役に立てば幸いです。

それではまた次回お目にかかりましょう。

ブログの著者欄

斉藤 弘信

GMOインターネットグループ株式会社

2001年に同社に入社。ユーザーサポートやデータセンターでのオペレーション業務等を担当し,その後社長室などのゼネラル部門を経て,2014年9月よりクラウド/ホスティング事業のテクニカルエバンジェリストを担当。現在はWebプロモーション研究室のソフトウェアエンジニアとして勤務。得意分野はWebアプリケーションの設計/開発,Linuxサーバー構築/運用。

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW