前回は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