Laravel

【Laravel】Google Analytics 4のデータをAPIで取得する

Google Cloudの設定

Google Cloudのプロジェクト作成

Google Analytics 4のデータをAPI経由で取得するには、まずGoogle Cloudでプロジェクトを作成する必要があります。下記のリンクからプロジェクト作成ページに移動できます。

https://console.cloud.google.com/projectcreate

①プロジェクト名を変更する

②作成ボタンをクリック

Google Analytics data api v1を有効化する

次に作成したプロジェクトでGoogle Analytics4のapiである、

①グローバルメニューをクリック

② APIとサービスをクリック

③有効なAPIとサービスをクリック

④ APIとサービスの有効化をクリック

⑤ 検索フォームに「analytics」と入力し、Enterで検索実行

⑥検索結果の「Google Analytics Data API」をクリック

⑦有効にするをクリック

サービスアカウントの作成

①グローバルメニューをクリック

②APIとサービスをクリック

③認証情報をクリック

④認証情報を作成をクリック

⑤サービスアカウントをクリック

⑥サービスアカウント名を入力

⑦完了をクリック

⑧作成したサービスアカウントをクリック

⑨キーをクリック

⑩鍵を追加をクリック

⑪新しい鍵を作成をクリック

⑫JSONタイプを選択

⑬作成をクリック

作成をクリックするとサービスアカウントのキーが書かれたJSONファイルをダウンロードできますので、ダウンロードしてください。

Google Analyticsの設定

先ほど作成したサービスアカウントでGoogle Analyticsのデータにアクセスできるように設定していきます。

Google Analyticsにログしてください。

Google Analytics

①歯車マークの設定をクリック

②プロパティのアクセス管理をクリック

③プラスマークをクリック

④ユーザーを追加をクリック

⑤先ほど作成したサービスアカウントのメールを入力します。

⑥追加をクリックします。

Laravelの実装等

次にLaravelを使って、Google Analytics 4の実装をしていきます。

Dockerを使ってLaravelの開発環境を構築する場合は、下記を参考にしてください。

Google Analytics Data for PHPのインストール

公式サイトはこちら

https://github.com/googleapis/php-analytics-data#installation

下記コマンドで、composerからインストールします。

$ composer require google/analytics-data

サービスアカウントのキーを設置

先ほど、サービスアカウント作成の際にダウンロードした jsonファイルを任意のディレクトリに設置してください。今回はルートディレクトリに設置します。

コントローラーに取得処理

今回は、今日から1週間前のセッションデータを取得する処理を書いてみます。

<?php

namespace App\Http\Controllers;

use DateTime;
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\Http\Request;

class Ga4Controller extends Controller
{
    /**
     * 
     */
    public function index()
    {
        // 修正してください。
        $jsonPath = base_path('ダウンロードしたjsonファイル名');
        putenv("GOOGLE_APPLICATION_CREDENTIALS=$jsonPath");
        // 修正してください。
        $property_id = 'Google Analytics 4のプロパティIDを記載';

        $client = new BetaAnalyticsDataClient();

        $oneBefeoreWeek = new DateTime();
        $oneBefeoreWeek->modify('- 7 days');

        // Make an API call.
        $response = $client->runReport([
            'property' => 'properties/' . $property_id,
            'dateRanges' => [
                new DateRange([
                    'start_date' => $oneBefeoreWeek->format('Y-m-d'),
                    'end_date' => 'today',
                ]),
            ],
            'dimensions' => [
                new Dimension(
                    [
                        'name' => 'date',
                    ]
                ),
            ],
            'metrics' => [
                new Metric(
                    [
                        'name' => 'sessions',
                    ]
                )
            ]
        ]);

        // Print results of an API call.
        print 'Report result: ' . "<br>";

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

ルーティング routes/web.php

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('ga4',[App\Http\Controllers\Ga4Controller::class,'index']);

動作確認

「/ga4」にアクセスすると下記のような、日付 値 の形式で表示されれば取得できているかと思います。

Report result:
20230807 48
20230808 40
20230810 30
20230809 28
20230811 18
20230806 9
20230812 3

以上です。