PHP から Google Analytics API v3 を叩く
Google Analytics のデータ集計を自動でしたいので調べながら書いてみます。
1. 新しいプロジェクトを作成する
Google Developers Console 左メニュー「プロジェクト」から新規プロジェクトを作成します。ここでは適当なプロジェクト名「Analytics Project」を付けました。
2. API を有効化する
「API と認証」内「API」から、今回使う Analytics API を選択します。その後の画面でスイッチをオンにします。
3. 認証情報
OAuth 「新しいクライアント ID を作成」を選択します。アプリケーションの種類は、サービスアカウントを選択します。
その後、秘密キー(*.p12)がダウンロードされ、そのパスワードが表示されますので控えておきます。
サービスアカウントに紐付く、クライアント ID とメールアドレス、公開キーのフィンガープリント(CERTIFICATE FINGERPRINTS)も控えておきます。
4. 発行されたメールアドレスに Analytics の権限を付与する
Google Analytics に移動し、「アナリティクス設定」タブ → アカウント「ユーザー管理」から、先程発行されたメールアドレスが Analytics を見れるように、権限を付与しておきます。
5. ビュー ID を取得する
権限を付与したアカウントに紐付く、プロパティに紐付く、ビューの ID を取得します。こちらを控えておきます。
6. Googel APIs を叩くクライアントライブラリをダウンロード
GitHub から、クライアントライブラリをダウンロードします。
https://github.com/google/google-api-php-client
7. PHP から Google Analytics API v3 を叩く
先程、ダウンロードしたライブラリを使って、Analytics API を叩いてみます。定数と viewId
は、自身の環境のものに変えます。
<?php
require_once(dirname(__FILE__) . '/google-api-php-client/autoload.php');
define('APPLICATION_NAME', '*');
define('SERVICE_ACCOUNT_NAME', '*@developer.gserviceaccount.com');
define('KEY_PATH', dirname(__FILE__) . '/p12/*.p12');
date_default_timezone_set('Asia/Tokyo');
class Analytics {
private $service;
function __construct($applicationName, $serviceAccountName, $keyPath) {
$creds = new Google_Auth_AssertionCredentials(
$serviceAccountName,
array('https://www.googleapis.com/auth/analytics'),
file_get_contents($keyPath)
);
$client = new Google_Client();
$client->setApplicationName($applicationName);
$client->setAssertionCredentials($creds);
$this->service = new Google_Service_Analytics($client);
}
function getReport($viewId, $startDate, $endDate) {
$result = $this->service->data_ga->get(
'ga:' . $viewId,
$startDate,
$endDate,
'ga:pageviews,ga:users'
);
return $result['rows'];
}
}
$analytics = new Analytics(APPLICATION_NAME, SERVICE_ACCOUNT_NAME, KEY_PATH);
$viewId = '*';
$yesterday = date('Y-m-d', strtotime('-1 day'));
var_dump($analytics->getReport($viewId, $yesterday, $yesterday));
実行結果は、こんな感じです。昨日一日分のページビューとユーザ数が取得出来ました。
$ php analytics.php
array(1) {
[0]=>
array(3) {
[0]=>
string(4) "1091"
[1]=>
string(3) "870"
}
}