※当ブログではアフィリエイト広告を利用しています。
事前準備編では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で値を返せるようにしておけば様々なシーンで利用ができそうです。