NTTドコモ様_dカーシェア
NTTドコモ様_dカーシェア
2015.12.14

Google Analytics APIでPVを集計しよう【実装編】

しょごたん

こんにちは、エンジニアのしょごです。

「Google Analytics APIでPVを集計しよう【準備編】」の続きです、見てない人はそちらからどうぞ。

PHPライブラリダウンロード

以降はPHPで動かすことを前提に記述します。

まずAPIを利用するために、クライアントライブラリを用意します。GithubにPHP用ライブラリが用意されているので、こちらをダウンロードしましょう。

画面右下の「Download ZIP」でダウンロードしたZipファイルを解凍します。

これでいよいよプログラムを書いていきます。

サンプルプログラム

実際にサンプルプログラムを用意しました。
まずはコードから、

/**-------------------------------------
 * 必須情報設定
 --------------------------------------*/
// サービスアカウント名(メールアドレス)
define('SERVICE_ACOUNT_NAME','xxxxxxxxxxx@xxxxxxx');
// P12キーファイルのパス
define('KEY_FILE_LOCATION',dirname(__FILE__) . '/xxxxxxxx.p12');
// アナリティクスのビューID 例)'ga:1234567'
define('ANALYTICS_VIEW_ID','ga:xxxxx');

// APIで取得したい件数
define('MAX_GET_COUNT',12);

// APIで取得したい日の対象A(A日~)
define('START_DATE', date("Y-m-d", strtotime("-1 week")));

// APIで取得したい日の対象B(~B日まで)
define('END_DATE', date("Y-m-d", strtotime("-1 day")));

// APIで取得する条件など
$target_array = array(
	'dimensions'  => 'ga:pageTitle,ga:pagePath', // 取得するディメンション設定
	'sort'        => '-ga:pageviews', // ページビューを取得
	'max-results' => MAX_GET_COUNT, //件数
	'filters' => 'ga:pagePath=~/' // フィルタリングが必要な場合はこちらに、例えば特定ディレクトリ直下なら(~/FujisakiShiori/)など記述
);

//----------------------------------------

// PHP用ライブラリロード
require_once dirname( __FILE__ ) . '/google-api-php-client/autoload.php';

/**
 * Analytics Apifunction Client生成
 */
 
// Googleクライアントのインスタンスを作成
$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_ACOUNT_NAME,array('https://www.googleapis.com/auth/analytics'),$key);
// Googleクライアントのインスタンスを作成
$client->setAssertionCredentials($cred);

// トークンのリフレッシュ
if($client->getAuth()->isAccessTokenExpired()) {
	$client->getAuth()->refreshTokenWithAssertion($cred);
}

// セッションの設定
$_SESSION['service_token'] = $client->getAccessToken();

// アナリティクスクライアントを生成
$analytics = new Google_Service_Analytics($client);


//指定期間のPVランキング取得
$result = $analytics->data_ga->get(
	ANALYTICS_VIEW_ID,
	START_DATE, //開始日
	END_DATE, //終了日
	'ga:pageviews',
	$target_array
);

// 取得したデータをよしなにする
print_r($result);

値の説明はコメントで記載しておりますが、最終的に$resultに配列形式でデータが帰ってきます。

取得対称日に関しては、dateタグを使って実行した日の一週間前から前日までのデータを取得するようにしております。
今回用意したものはバッチ化させる想定でいましたので、これを元にロジックを作成してcronで自動実行させてあげれば、毎日一週間前のPVデータを取得できちゃいますね。

また、準備編で取得したデータや鍵ファイルなどを必須情報設定とコメントで囲ってある部分に設定し、取得対称日や取得件数、取得条件のディメンションなどを指定することで取得するデータを調整できます。
例えば上記サンプルだと、ページタイトルとページパスを取得する形になります。

変更の必要がある箇所はあえて定数化、変数化させて別口にしておりますので、コピペで使う際はそのあたりを調整して使用してみてください。

まとめ

いかがでしたか?
これを用いて、取得したデータをもとにDBに保存してMovableTypeやWordPressなどの記事IDとうまいこと紐づけてあげれば、簡単にPVランキングができちゃいますね! もうこわくないランキングロジック! ヒャッハー!

それでは。