LaravelでGoogle Analytics 4 (GA4) APIを使ってみる

これは2021年5月末の情報。

公式サイトを見て、最新の情報をチェックすることを推奨。

GA4のための、Analytics Data API を使ってみる。

Overviewを読んでみる

Analytics Data APIはベータ版らしい。ふーん。

重大な変更は予定されていないらしい。 ただ、pre-GA との互換性はないらしい。

API Quickstartをやってみる

Step 1. Enable the API

ボタン (Enable the Google Analytics Data API v1) があって簡単だー。

Step1 でダウンロードしたjsonファイル を credentials.json に名前を変換して、

Laravelのルートディレクトリに配置。

|- app
|- bootstrap
|- config
|- database
|- public
|- resources
|- routes
|- storage
|- tests
|- .editorconfig
|- .env
|- .env.example
|- .gitattributes
|- .styleci.yml
|- CHANGELOG.md
|- README.md
|- artisan
|- credentials.json
|- composer.json
|- composer.lock
|- package.json
|- phpunit.xml
|- server.php
|- webpack.mix.js

Step 2. Add service account to the Google Analytics 4 property

これも読めばできる! よかった。

Step 3. Configure authentication

ここはやる必要がないので、スキップ!!

例えば、

$ export GOOGLE_APPLICATION_CREDENTIALS="[PATH]" 

はしなくて良いよー。今回はこれを使わない方向で進めるよ。

Step 4. Install the client library                  

今回は、 Laravel から GA4を使いたいので、PHPでやる。

他にも、Java、Python、Node.js、.NET、Goが対応しているらしい。いろんな言語で試せるのはとてもありがたい。

まずは、composerを通して、ライブラリをインストール。

$ composer require google/analytics-data

むむ、なんか、GitHubの情報少ない😭。

次にMake an API callのサンプルコード(quickstart.php)を試したいけど、Laravelだとそのままでは実行できない。

Laravelのために、少しカスタマイズする必要がありそう。

今回はLaravelのコマンドラインツール (artisan コマンド)として、実行してみる。

まずはコマンドで雛形の作成。

$ php artisan make:command AnalyticsTestCommand

そうすると、app内のConsole/Commands配下にAnalyticsTestCommand.phpができた。

|- app
 |- Console
  |- Commands
   |- AnalyticsTestCommand.php
|- bootstrap
|- config
|- database
|- public
|- resources
|- routes
|- storage
|- tests

ソースコードはこんな感じにした!

ポイントは、BetaAnalyticsDataClientのConstructorで’credentials’ => base_path(‘credentials.json’)を指定すること。

base_path関数は、Laravelプロジェクトのルートディレクトリまでのパスを作ってくれる。便利!

もちろん、YOUR-GA4-PROPERTY-IDは自分で調べて設定してね!!!

サイドバーから「管理」を選んで、プロパティの中の「プロパティ設定」の中にプロパティIDがある。

<?php

namespace App\Console\Commands;

use Google\Analytics\Data\V1beta\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;
use Illuminate\Console\Command;

class AnalyticsTestCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'test:analytics';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Google Analyticsのデータを取得する';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        /**
         * TODO(developer): Replace this variable with your Google Analytics 4
         *   property ID before running the sample.
         */
        $property_id = 'YOUR-GA4-PROPERTY-ID';

        // Using a default constructor instructs the client to use the credentials
        // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
        $client = new BetaAnalyticsDataClient([
            'credentials' => base_path('credentials.json'),
        ]);

        // 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' => 'pagePath',
                ]
            ),
            ],
            'metrics' => [new Metric(
                [
                    'name' => 'activeUsers',
                ]
            )
            ]
        ]);

        // Print results of an API call.
        print 'Report result: ' . PHP_EOL;

        foreach ($response->getRows() as $row) {
            print $row->getDimensionValues()[0]->getValue()
                . ' ' . $row->getMetricValues()[0]->getValue() . PHP_EOL;
        }
        return 0;
    }
}

実行方法はこのコマンド

$ php artisan test:analytics

できたああああ。URLの一覧とアクセス数が取得できた!!!

アプリケーションで幸せにアクセス数を使えるようになった。めでたし。

最後に、API Dimensions & Metricsを見て、適当にカスタマイズしたら、好きな情報を自由に引き出せる!