Google Analytics APIで日付×ページ別にPVを集計する方法

By ookura - 10/10/26 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

前回はGoogle Analytics APIで日付別にPV集計をする方法について記述しましたが、今回はページ別に集計する方法についてご紹介します。
→参照:「Google Analytics APIで日付別にPVを集計する方法」
 
 

フィルタをかける

ページ別の集計は、フィルタをかけることで実現可能です。
フィルタとして指定するパラメータは「ga:pagePath」になります。

'filters'=>urlencode('ga:pagePath==/hoge.html'),

 
 

パスを指定する

パスの指定は完全一致と部分一致の2つの指定方法があります。
 
特定のページだけを取得したいときは完全一致「==」を、

ga:pagePath==/hoge.html

 
特定のディレクトリ以下を合計して集計したいときは部分一致「=~」を使うとよいです。

ga:pagePath=~/fuga/

 
※先頭や末尾のマッチはできないようですので、部分一致で指定するパスと同じ文字列が他のページのパスに含まれる場合はご注意下さい。
例:上記の場合「/fuga/」だけでなく、「/hoge/fuga/」にもマッチしてしまいます。
 
 
また、カンマ区切りで記述することで複数のページやディレクトリをOR条件で指定することもできますのでご参考までに。

ga:pagePath==/,ga:pagePath==/index.html

 
フィルタをかけない場合はもちろん総ページビューになります。
 
 

準備

集計に必要なライブラリやアカウント情報については、前回の記事をご参照下さい。
→参照:「Google Analytics APIで日付別にPVを集計する方法」
 
 

ソース例

下記は日付×ページ別にPV(ページビュー)を取得するサンプルです。
あらかじめ同階層もしくはパスの通っているディレクトリにgoogleanalytics.class.phpを配置しておきます。
 
返り値は配列で取得できますので、管理システム内で加工して簡単に扱うことができるかと思います。
 
 

<?php
require_once 'googleanalytics.class.php';
try {
    // アカウント情報を設定
    $ga = new GoogleAnalytics('メールアドレス','パスワード');

    // プロファイルIDを指定
    $ga->setProfile('ga:プロファイルID');

    // 期間を指定
    $ga->setDateRange('2010-04-01','2010-04-02');

    $report = array();
    // 日付別の総ページビューを取得
    $report['all'] = $ga->getReport(
        array(
            'dimensions'=>urlencode('ga:date'),
            'metrics'=>urlencode('ga:pageviews'),
            'sort'=>'ga:date'
        )
    );
    // ページ「/hoge.html」の日付別の総ページビューを取得
    $report['hoge'] = $ga->getReport(
        array(
            'dimensions'=>urlencode('ga:date'),
            'metrics'=>urlencode('ga:pageviews'),
            'filters'=>urlencode('ga:pagePath==/hoge.html'),
            'sort'=>'ga:date'
        )
    );
    // ページ「/fuga/」ディレクトリ以下の日付別の総ページビューを取得
    $report['fuga'] = $ga->getReport(
        array(
            'dimensions'=>urlencode('ga:date'),
            'metrics'=>urlencode('ga:pageviews'),
            'filters'=>urlencode('ga:pagePath=~/fuga/'),
            'sort'=>'ga:date'
        )
    );
    // ページ「/」「/index.html」の日付別の総ページビューを取得
    $report['index'] = $ga->getReport(
        array(
            'dimensions'=>urlencode('ga:date'),
            'metrics'=>urlencode('ga:pageviews'),
            'filters'=>urlencode('ga:pagePath==/,ga:pagePath==/index.html'),
            'sort'=>'ga:date'
        )
    );
    
    // 結果を出力
    $result = print_r($report, TRUE);
    echo "<pre>{$result}</pre>";
    
// 例外処理
} catch (Exception $e) { 
    print 'Error: ' . $e->getMessage(); 
}

?>

 
 

実行結果

例えば上記ソースを実行した場合、以下のように出力されます。※PVはダミーです。

Array
(
    [all] => Array
        (
            [20100401] => Array
                (
                    [ga:pageviews] => 704
                )

            [20100402] => Array
                (
                    [ga:pageviews] => 976
                )

        )

    [hoge] => Array
        (
            [20100401] => Array
                (
                    [ga:pageviews] => 208
                )

            [20100402] => Array
                (
                    [ga:pageviews] => 365
                )

        )

    [fuga] => Array
        (
            [20100401] => Array
                (
                    [ga:pageviews] => 169
                )

            [20100402] => Array
                (
                    [ga:pageviews] => 184
                )

        )

    [index] => Array
        (
            [20100401] => Array
                (
                    [ga:pageviews] => 170
                )

            [20100402] => Array
                (
                    [ga:pageviews] => 243
                )

        )

)

 
 

備考

集計する項目が多い場合は何度もAPIにアクセスするため若干時間がかかるかと思います。
その場合はあらかじめ定期的に集計結果をDB等、別に保存しておいたものを出力した方がスムーズに閲覧できます。
 
 

参考URL

▼「Google Analytics API 」をPHPから便利に使えるクラスライブラリ:phpspot開発日誌
http://phpspot.org/blog/archives/2009/06/google_analytic_2.html
 
▼Dimensions & Metrics Reference – Google Analytics – Google Code
http://code.google.com/intl/ja/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html
 
 

Posted in PHP • Tags: , , , Top Of Page