Solarized
HOME > WEBプログラム覚書 > [PHP]Google Analytics からデータを取得 part2
[PHP]Google Analytics からデータを取得 part2
「WEBプログラム覚書::[PHP]google Analytics からアクセスの多いページの情報を取得」に引き続きGoogle Analytics API からデータを取得してみる。
PV数だけの場合、SERPsで上位だと内容無くてすぐお帰りになられてるページでも
ランクインしてしまうのでオススメとして表示するには微妙な感じになってしまいます。
なので今回はちゃんと読まれてるページをオススメページとして取ってみようかと思います。
条件としては「ページビューが100以上」かつ「ページの閲覧時間が2時間以上」のページを取得してみます。
本当は「平均ページ滞在時間」を取りたいのですが、今のところ用意されてないみたいです。
フィルタ
条件を指定するにはフィルタを使います。難しそうな感じがして
前回避けたんですが、実はそれほど難しくもないです。
analytics_apiを利用してフィルタを設定するにはanalytics_filtersクラスを利用すると
簡単便利です。
利用しなくても必要な処理はエンコードくらいなので
それほど難しくないです。
フィルタの書式は下記ページを参照ください。
/pg/以下の「ページビューが100以上」かつ「ページの閲覧時間が2時間以上」のページ
PHP
- <?php
- require_once('analytics_api.php');
- $api = new analytics_api();
-
- $filters = new analytics_filters('ga:pageviews', '>=', '100');
-
-
-
-
- $filters->add_and('ga:timeOnPage', '>=', 60*60*2);
-
-
- $filters->add_and('ga:pagePath', '=~', '^/pg/*');
-
-
- $filters->add_and('ga:pageTitle', '!=', '(not set)');
-
- if($api->login(GA_ID, GA_PASS)) {
- $result = $api->data(
- 'ga:792415',
- 'ga:pageTitle,ga:pagePath',
- 'ga:pageviews,ga:timeOnPage',
- '-ga:timeOnPage',
- '2009-11-01',
- '2009-12-15',
- '20',
- 1,
- $filters
- );
- } else {
- throw new Exception('ログインに失敗しました。IDとパス要確認');
- }
-
- echo '<pre>';
- var_dump($result);
- echo '</pre>';
- ?>
実行結果
ん?「平均ページ滞在時間」はデータ取得後にPHPに計算させればいけるんじゃないか?
1PV辺りの閲覧時間が長いページ
PHP
- <?php
- require_once('analytics_api.php');
- $api = new analytics_api();
-
- $filters = new analytics_filters('ga:pageviews', '>=', '100');
- $filters->add_and('ga:pageTitle', '!=', '(not set)');
-
- if($api->login(GA_ID, GA_PASS)) {
- $result = $api->data(
- 'ga:792415',
- 'ga:pageTitle,ga:pagePath',
- 'ga:pageviews,ga:timeOnPage',
- false,
- '2008-12-16',
- '2009-12-15',
- '50',
- 1,
- $filters
- );
- } else {
- throw new Exception('ログインに失敗しました。IDとパス要確認');
- }
-
- $new_result = array();
- $time = array();
-
- foreach ($result as $name => $pagedata) {
- $title = $name;
- $url = key($pagedata);
- $view = $pagedata[$url]['ga:pageviews'];
- $top = $pagedata[$url]['ga:timeOnPage'];
- $viewtime = (int) $top / (int) $view;
-
- $new_result[] = array(
- 'time' => $viewtime,
- 'view' => sprintf('(%sビュー)', $view),
- 'html' => sprintf('<a href="%s">%s</a>', $url, $title)
- );
-
- $time[] = $viewtime;
- }
-
- array_multisort($time, SORT_DESC, SORT_NUMERIC, $new_result);
-
- $html = '';
- foreach ($new_result as $value) {
- $html .= sprintf('<dt>%s 秒: %s</dt><dd>%s</dd>',
- $value['time'],
- $value['view'],
- $value['html']
- );
- }
- echo '<dl>' . $html . '</dl>';
- ?>
実行結果
んー合ってるかコレ??かなり自信ない。
なにやら↓がかなり評判がよさげ。買おうかな・・・
| 投稿日 |
2009年12月19日 00:51 |
| カテゴリ |
PHP |
| タグ |
Google Analytics | サンプルコード | テストコード |
| トラックバック URL |
http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1192 |