Google Analytics Data APIの導入手順

案外忘れてしまうので、自分用にメモを残しておきます。導入でお困りの方がいらっしゃいましたら、下記手順通りに進めていただければ、プログラムを各段階にまで進める事が出来ます。 GCPでの設定 Google Analytics […]

案外忘れてしまうので、自分用にメモを残しておきます。導入でお困りの方がいらっしゃいましたら、下記手順通りに進めていただければ、プログラムを各段階にまで進める事が出来ます。

GCPでの設定

  1. 新規プロダクトを作成
  2. プロジェクトが作成されたらプロジェクトに移動
  3. マーケットプレイスに移動して「Google Analytics Data API」を検索
  4. アナリティクスのロゴが付いてる「Google Analytics Data API」 を有効に
  5. 「認証情報」タブに移動して「サービスアカウントを管理」をクリック
  6. 「サービス アカウントを作成」をクリック
  7. 「名称」を入力して後は省略して作成
  8. 一覧に戻るので作成したアカウントをクリック
  9. 「キー」タブに移動して「鍵を追加」から「新しい鍵を作成」をクリック
  10. キーのタイプを「JSON」にした状態で「作成」
  11. ダウンロードしたJSONファイルを忘れずに保管する
    • 再発行ができないので紛失注意
  12. 以下のいずれかの方法でクライアントメールアドレスをコピーする
    • ダウンロードしたJSONファイルの「client_email」
    • サービスアカウントの「詳細」タブのメール

Google Analyticsでの設定

  1. 左下の歯車をクリック
  2. 「アカウント設定」の「アカウントのアクセス管理」をクリック
  3. 右上のプラスマークから「新しいユーザーを追加」をクリック
  4. サービスアカウントのクライアントメールアドレスを入力して権限を下記に
    • 標準の役割を「なし」に
    • プロパティの権限で対象のプロパティの権限を「閲覧者」に

PHPサンプルで動作確認

  1. PHPクライアントをComposerでインストール
    1. インストール手順
  2. 下記サンプルコードを参考に動作確認
<?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;
}