Google Analytics APIを使って、ブログなどのアクセスランキングを作る方法を紹介します。
1.完成イメージ
本エントリーで紹介する手順で作成すれば、ブログに次のようなランキングを表示できるようになります。
厳密には、ランキング用HTMLファイルを出力するところまでの説明となります。
ブログにランキングを表示させる手順は割愛していますので、出力ファイルを適宜インクルードしてください。
2.作成手順
「Google Analytics API class for PHP」の中ほどにある「googleanalytics.class.zip」をクリックして、ファイルをダウンロード。
アーカイブを展開して、中にあるGoogle Analytics APIを利用するためのライブラリ「googleanalytics.class.php」をサーバにアップロードしてください。
次に、アップロードしたライブラリを利用してアクセスを収集するためのPHPコード(以下)を、任意のファイル名で保存し、編集後「googleanalytics.class.php」と同じディレクトリにアップロードしてください。
<?php
$filename = 'ranking.html'; // 出力ファイル名
require_once('googleanalytics.class.php');
try {
$ga = new GoogleAnalytics('メールアドレス','パスワード');
$ga->setProfile('ga:プロファイルID');
$ga->setDateRange('YYYY-MM-DD','YYYY-MM-DD'); // 収集期間
$report = $ga->getReport(
array('dimensions'=>urlencode('ga:date,ga:pageTitle,ga:pagePath'),
'metrics'=>urlencode('ga:pageviews'),
'filters'=>urlencode('ga:pagePath=~^/パス/'),
'sort'=>urlencode('-ga:pageviews')
)
);
$file = fopen($filename, 'w');
fwrite($file, '<style>a:visited{color:#00f;}</style><div><h3>アクセスランキング</h3><ul>');
$counter = 1;
foreach ($report as $key => $value) {
foreach ($value as $pageview) {
$keys = preg_split("/~~/", $key);
fwrite($file, '<li><a href="http://user-domain' . $keys[2] . '">' . $keys[1] . '</a> ' . $pageview. '</li>');
}
if ($counter >= 20) {
break;
}
$counter++;
}
fwrite($file, '</ul></div>');
fclose($file);
} catch (Exception $e) {
print 'Error: ' . $e->getMessage();
}
?>
詳細は後述しますが、このPHPをサーバ上で実行すれば、冒頭の完成イメージになるようなファイルを出力します。
3.PHPの設定項目
2項のファイルの変更方法です。
このPHPから出力するファイル名やパスを変更したい場合は、赤色部分を書き換えてください。
$filename = 'ranking.html'; // 出力ファイル名
利用しているGoogle Analyticsのメールアドレス・パスワードを設定してください(必須)。
$ga = new GoogleAnalytics('メールアドレス','パスワード');
利用しているGoogle AnalyticsのプロファイルIDを設定してください(必須)。
$ga->setProfile('ga:プロファイルID');
プロファイルIDは、「アナリティクス設定」→「プロファイル」タブ→「プロファイル設定」タブの「プロファイルID」から取得してください。
収集期間を設定します。同じ日付を設定すれば1日分のランキングが作れます。
$ga->setDateRange('YYYY-MM-DD','YYYY-MM-DD'); // 収集期間
収集対象のURLのパスを設定してください(必須)。
'filters'=>urlencode('ga:pagePath=~^/パス/'),
パスに何を設定すればよいのか分かりにくいですが、たとえば当ブログの記事は「http://www.koikikukan.com/archives/」配下にすべて出力しているので、次のようにドメインを除いた「archives」を設定します。
'filters'=>urlencode('ga:pagePath=~^/archives/'),
出力記事数を変更したい場合は、次の「20」の部分を変更してください。
if ($counter >= 20) {
設定が必要な変数はソースコードに冒頭に別途まとめたいと思います。現状はとりあえず版ということで。
4.ビジター数を取得する
サンプルはページビューを取得していますが、ビジター数を取得したい場合は「metrics」の項目を次のように変更してください。
'metrics'=>urlencode('ga:visits'),
両方取得することもできます。
'metrics'=>urlencode('ga:visits,ga:pageviews'),
このあたりの詳細は以下のページを参照してください。
5.PHPの実行
3項で編集したPHPファイルは1日1回など、cronで周期的に実行させてください。