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にログしてください。
①歯車マークの設定をクリック

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

③プラスマークをクリック
④ユーザーを追加をクリック

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

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
以上です。