※当ブログではアフィリエイト広告を利用しています。
事前準備編ではGoogle Analytics APIを使うために必要な情報を準備しました。
実践編では実際にPHPからGoogle Analyticsのリアルタイムアクティブユーザー数を取得してみます。コピペで使えるコードもあります。
はじめに
本エントリではGoogle Analytics APIを使ってPHPからウェブサイトのリアルタイムアクティブユーザー数の取得をプログラムで実践します。事前準備編の準備ができていることが前提となります。
前回エントリ:Google Analytics API(v3)を使ってPHPでリアルタイムユーザー数を取得する方法(事前準備編)
Google APIs Client Library for PHPの準備
PHPからAPIを使うため、クライアントライブラリを準備します。ライブラリはComposerからインストールするか、GitHubからソースをダウンロードします。今回はGitHubからコピーする方法で準備します。
関連ページ:Installation – Google APIs Client Library for PHP — Google Developers
GitHubのプロジェクトページの下記の場所からダウンロードします。
または下記コマンドでgit cloneします。
git clone https://github.com/google/google-api-php-client.git
コピーしたファイルは以下のような構成になっています。実際に使用するのはsrcフォルダの中身だけです。
Google Analyticsのリアルタイムユーザー数をPHPで取得するサンプル
ようやくプログラムの出番です。まずリアルタイムユーザ数取得用のPHPを任意の名前(fetchactiveuser.phpなど)で作成し、クライアントライブラリのsrcフォルダおよび準備編で準備した*.p12ファイルと同じ階層に配置します。階層はコード中で指定しているものと同じになれば変わってもOKです。
以下はリアルタイムユーザー数をPHPで取得し、JSON形式で返すサンプルコードです。サービスアカウント名、P12キーファイルのパス、アナリティクスビューIDは準備編で用意した自分のものに置き換えます。
<?php
/**
* Google Analyticsのリアルタイムユーザ数を取得しJSONで返却
*/
set_include_path("./src/" . PATH_SEPARATOR . get_include_path());
require_once 'Google/Client.php';
require_once 'Google/Service/Analytics.php';
// サービスアカウント名(メールアドレス)
$service_account_name = 'YOUR_MAIL_ADDRESS@developer.gserviceaccount.com';
// P12キーファイルのパス
$key_file_location = './YOUR_KEY_FILE.p12';
// アナリティクスのビューID 例)'ga:1234567'
$analytics_view_id = 'ga:1234567';
session_start();
if ( !strlen($service_account_name)
|| !strlen($key_file_location)) {
echo missingServiceAccountDetailsWarning();
}
$client = new Google_Client();
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/analytics'),
$key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
// アナリティクスクライアントを生成
$analytics = new Google_Service_Analytics($client);
try {
// リアルタイムデータを取得する
$results = $analytics->data_realtime->get(
$analytics_view_id, // アナリティクスのビューID(アナリティクス設定 -> ビュー -> ビュー設定から確認)
'rt:activeUsers' // リアルタイムアクティブユーザー数を取得
);
// 取得結果からリアルタイムアクティブユーザ数を取り出す
$totals = $results->getTotalsForAllResults();
// activeUsers:ユーザ数 の配列に加工
$array = array("activeUsers" => $totals["rt:activeUsers"]);
// JSONに変換して表示
header("Content-Type: application/json; charset=utf-8");
header('Access-Control-Allow-Origin: *');
echo json_encode($array);
} catch (apiServiceException $e) {
echo $e->getMessage();
}
プログラムを実行すると以下のようにJSON形式でリアルタイムアクティブユーザ数が返されます。
{"activeUsers":"10"}
ほぼ同時刻のGoogle AnalyticsのWeb画面とAPIを使ったプログラム実行結果の比較です。アクティブユーザ数が同じであることが確認できます。
コード中では認証情報をもとにGoogleアナリティクスのクライアントを生成し、ビューIDとメトリクスrt:activeUsersを指定してReal Time Reporting API(v3)のgetメソッドを使ってリアルタイムアクティブユーザ数を取得しています。メソッドの詳細な使い方は公式のAPIドキュメントが参考になります。
公式ドキュメント:Real Time Data: get – Google Analytics — Google Developers
おわりに
今回はリアルタイムユーザのみを取得しましたが、APIを使えばGoogle Analyticsの他の値も簡単にプログラムから取得することが可能です。
準備が少し大変ですが、JSONやXMLで値を返せるようにしておけば様々なシーンで利用ができそうです。










