Google Analytics APIでページのアクセスランキングを作る方法

Google Analytics APIでページのアクセスランキングを作る方法

Posted at May 10,2012 1:55 AM
Tag:[Analytics, Google]

Google Analytics APIを使って、ウェブサイトやブログなどの人気ページのアクセスランキングを作る方法を紹介します。

1.完成イメージ

本エントリーで紹介する手順で作成すれば、ブログに次のようなランキングを表示できるようになります。

完成イメージ

厳密には、ランキング用HTMLファイルを出力するところまでの説明となります。

ブログにランキングを表示させる手順は割愛していますので、出力ファイルを適宜インクルードしてください。

2.作成手順

Google Analytics API class for PHP」の中ほどにある「googleanalytics.class.zip」をクリックして、ファイルをダウンロード。

Google Analytics API class for PHP

アーカイブを展開して、中にある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, '<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」から取得してください。

プロファイル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/'),

サイトのドメインを赤色部分に設定してください。

fwrite($file, '<li><a href="http://user-domain' . $keys[2] . '">' . $keys[1] . '</a> ' . $pageview. '</li>');

出力記事数を変更したい場合は、次の「20」の部分を変更してください。

if ($counter >= 20) {

設定が必要な変数はソースコードに冒頭に別途まとめたいと思います。現状はとりあえず版ということで。

ちなみに、getReport()で取得できるデータは次のようなものになります。

Array
(
    [20120501~~「8.8.8.8,8.8.4.4」より速い「129.250.35.250」: 小粋空間~~/archives/2011/09/17-035555.php] => Array
        (
            [ga:pageviews] => 3390
        )
 
    [20120501~~Android端末のWiFi接続にGoogle Public DNSを設定する: 小粋空間~~/archives/2011/10/24-005555.php] => Array
        (
            [ga:pageviews] => 1443
        )
 
    [20120501~~Facebookの「いいね!」を非公開にする方法: 小粋空間~~/archives/2011/08/17-003333.php] => Array
        (
            [ga:pageviews] => 839
        )
        …略…
)

4.ビジター数を取得する

サンプルはページビューを取得していますが、ビジター数を取得したい場合は「metrics」の項目を次のように変更してください。

'metrics'=>urlencode('ga:visits'),

両方取得することもできます。

'metrics'=>urlencode('ga:visits,ga:pageviews'),

このあたりの詳細は以下のページを参照してください。

Dimensions & Metrics Reference

5.PHPの実行

3項で編集したPHPファイルは1日1回など、cronで周期的に実行させてください。


2012.05.11追記
Open MagicVox.netのぴろりさんが、奇遇にも同日に同じ記事をエントリーされてました。そちらもご参考にどうぞ。

人気記事の一覧を Google Analytics から取得する:GADGET - Open MagicVox.net
関連記事
トラックバックURL


トラックバック

人気記事の一覧を Google Analytics から取得する:GADGET from Open MagicVox.net
以前に人気記事のランキングを表示する PHP スクリプトを公開しましたが、これは MovableType で運用されているサイトでしか動作しないという制... [続きを読む]

Tracked on May 10, 2012 10:46 AM

【PHP】アナリティクスAPIを使った人気記事ランキング from PCテクニック集 by ユニファース
Googleアナリティクスが提供しているAPIを使って、人気記事ランキングを設置するプログラムです。 このプログラムには、 Google Analytic... [続きを読む]

Tracked on January 10, 2013 1:56 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)