案外忘れてしまうので、自分用にメモを残しておきます。導入でお困りの方がいらっしゃいましたら、下記手順通りに進めていただければ、プログラムを各段階にまで進める事が出来ます。
GCPでの設定
- 新規プロダクトを作成
- プロジェクトが作成されたらプロジェクトに移動
- マーケットプレイスに移動して「Google Analytics Data API」を検索
- アナリティクスのロゴが付いてる「Google Analytics Data API」 を有効に
- 「認証情報」タブに移動して「サービスアカウントを管理」をクリック
- 「サービス アカウントを作成」をクリック
- 「名称」を入力して後は省略して作成
- 一覧に戻るので作成したアカウントをクリック
- 「キー」タブに移動して「鍵を追加」から「新しい鍵を作成」をクリック
- キーのタイプを「JSON」にした状態で「作成」
- ダウンロードしたJSONファイルを忘れずに保管する
- 再発行ができないので紛失注意
- 以下のいずれかの方法でクライアントメールアドレスをコピーする
- ダウンロードしたJSONファイルの「client_email」
- サービスアカウントの「詳細」タブのメール
Google Analyticsでの設定
- 左下の歯車をクリック
- 「アカウント設定」の「アカウントのアクセス管理」をクリック
- 右上のプラスマークから「新しいユーザーを追加」をクリック
- サービスアカウントのクライアントメールアドレスを入力して権限を下記に
- 標準の役割を「なし」に
- プロパティの権限で対象のプロパティの権限を「閲覧者」に
PHPサンプルで動作確認
- PHPクライアントをComposerでインストール
- 下記サンプルコードを参考に動作確認
<?php
// サービスアカウントの認証キーJSONを設置
// 環境変数にJSONへのパスを設定
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/service_account_key.json');
// クライアントロード
require_once __DIR__ . '/vendor/autoload.php';
// 以下はGoogleのサンプルコード
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\RunReportRequest;
/**
* TODO(developer): Replace this variable with your Google Analytics 4
* property ID before running the sample.
*/
$property_id = 'PROPERTY_ID';
// Using a default constructor instructs the client to use the credentials
// specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
$client = new BetaAnalyticsDataClient();
// Make an API call.
$request = (new RunReportRequest())
->setProperty('properties/' . $property_id)
->setDateRanges([
new DateRange([
'start_date' => '2020-03-31',
'end_date' => 'today',
]),
])
->setDimensions([new Dimension([
'name' => 'city',
]),
])
->setMetrics([new Metric([
'name' => 'activeUsers',
])
]);
$response = $client->runReport($request);
// 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;
}