2013/09/06

アクセスランキングの作成に!Googleアナリティクスからアクセスデータを取得する方法

『アクセスランキングの作成に!Googleアナリティクスからアクセスデータを取得する方法』

アクセスランキングに利用できるアクセス数などのデータをGoogleアナリティクスから取得する方法を紹介します。

公式ではありませんがPHPのgapi.classというクラスを使うと簡単にGoogleアナリティクスのデータを取得できるのでオススメです。

目次

■gapi.classダウンロード

https://code.google.com/p/gapi-google-analytics-php-interface/

このサイトからgapi.class.phpをダウンロードして、実行するファイルと同じ階層に入れておいて下さい。

このクラスはGoogle アナリティクスにログインしてページビュー訪問数などを参照する事ができます。

■サンプルコード

<?php

require_once 'gapi.class.php';

//アナリティクスへのログイン情報を記述します
define('email','メールアドレス');	//メールアドレスを記述(必須)
define('password','パスワード');	//パスワードを記述(必須)
define('profileId','ビューID');		//ビューIDを記述(必須)
 
date_default_timezone_set('Asia/Tokyo');
//$filter = 'pagePath=~/下層ディレクトリ';
$startDate = date('Y-m-d', strtotime("-7 day"));
$endDate = date('Y-m-d', strtotime("now"));
$offset = 1;
$max = 10;
$count = 1;
$body = "<tr><th>ここ7日間のランキング</th><td></td><td>Pageviews </td><td>Visits</td></tr>";
 
$ga = new gapi(email,password);
$ga->requestReportData(profileId,
                        array('pageTitle','pagePath'),
                        array('pageviews','visits'),
                        '-pageviews',
                        $filter,
                        $startDate,
                        $endDate,
                        $offset,
                        $max);
 
foreach($ga->getResults() as $result){ 
    $body .= '
        <tr>
            <th style="width: 100px; border: 1px solid rgb(51, 51, 51);">'.$count.'位</th>
            <td><a href="ドメイン'.$result->getPagepath().'" style="color: rgb(4, 146, 229);">'.$result->getPagetitle().'</a></td>
            <td>'.$result->getPageviews().'</td>
            <td>'.$result->getVisits().'</td>
        </tr>
    ';
    $count++;
}
 
$content = '<table>
    <tbody>'.
        $body.
    '</tbody>
</table>';
 
echo $content;

■サンプルコードの解説

3行目

require_once 'gapi.class.php';

gapi.class.phpを読み込みます。

6,7,8行目

define('email','メールアドレス'); //メールアドレスを記述(必須)
define('password','パスワード'); //パスワードを記述(必須)
define('profileId','ビューID'); //ビューIDを記述(必須)

googleアナリティクスのデータを引用するためにログイン情報を入力します。
メールアドレスパスワードビューIDをそれぞれ書き換えて下さい。

ビューIDとは...一つのアナリティクスのIDで複数のサイトを管理できますので、その中のどのサイトの情報を参照するのかを指定するものです。

※googleアナリティクスのサイトで「アナリティクス設定」→「ビュー設定」の順でクリックしたページに記載されています。

11行目

//$filter = 'pagePath=~/下層ディレクトリ';

サイト内の特定の階層のデータだけを参照したい場合はコメントアウトを外して、
下層ディレクトリ-と書かれている箇所を書き換えます。

例)
http://www.hp-stylelink.com のサイトで /news/ の階層のランキングだけ参照したい場合は
$filter = 'pagePath=~/news/'; と書き換えます。

12,13行目

$startDate = date('Y-m-d', strtotime("-7 day"));
$endDate = date('Y-m-d', strtotime("now"));

どの期間のデータを取得するか指定します。
この場合は7日前からまでのデータを指定しています。

15行目

$max = 10;

上位何件までのデータを取得するか指定します。

23行目

$ga->requestReportData(profileId,
                        array('pageTitle','pagePath'),
                        array('pageviews','visits'),
                        '-pageviews',
                        $filter,
                        $startDate,
                        $endDate,
                        $offset,
                        $max);

ページビューの数でソートしていますが'- visits ',と指定すると訪問者数でソートできます。

30行目~

foreach($ga->getResults() as $result){ 
    $body .= '
        <tr>
            <th style="width: 100px; border: 1px solid rgb(51, 51, 51);">'.$count.'位</th>
            <td><a href="ドメイン'.$result->getPagepath().'" style="color: rgb(4, 146, 229);">'.$result->getPagetitle().'</a></td>
            <td>'.$result->getPageviews().'</td>
            <td>'.$result->getVisits().'</td>
        </tr>
    ';
    $count++;
}

以下の記述でそれぞれのデータを参照できます。

$result->getPageviews() ページビュー数
$result->getVisits() ビジター数
$result->getPagetitle() サイトのタイトル
$result->getPagepath() ドメイン名以降のurl

この他に取得できる値は Dimensions & Metrics Reference - Google Analytics - Google Code から確認できます。

34行目

foreach($ga->getResults() as $result){ 
    $body .= '
        <tr>
            <th style="width: 100px; border: 1px solid rgb(51, 51, 51);">'.$count.'位</th>
            <td><a href="ドメイン'.$result->getPagepath().'" style="color: rgb(4, 146, 229);">'.$result->getPagetitle().'</a></td>
            <td>'.$result->getPageviews().'</td>
            <td>'.$result->getVisits().'</td>
        </tr>
    ';
    $count++;
}

取得されるurlはドメイン名以降のurlなので、ドメイン名を入力します。
このサイトの場合はhttp://www.hp-stylelink.comと書き換えます。

ソースはUTF-8Nで保存してブラウザの文字コードはUTF-8で閲覧して下さい。
UTF-8とUTF-8Nの違い(motd.)

アクセスするごとにアナリティクスにログインしますと重くなりますので、実際には日に何回かサーバーにファイルを吐き出すように設定しておいて、それを参照するようにした方が効率的です。

■使用制限について

Googleではサーバーに負荷をかけ過ぎないように以下の制限を設けています。

  • ・24 時間あたり 10,000 リクエストまで
  • ・IP アドレスあたり 1 秒間 10 リクエスト
  • ・IP アドレスあたりの同時リクエスト数 4

Data Export API - スタート ガイド - Google アナリティクス - Google Codeより

■まとめ

サイト内アクセスランキングを作る方法はいくつかあります。
その中でもgapi.classを使うと簡単にできますので、是非参考にしてみて下さい。