KANTENNA.COM

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
  1.  <?php
  2.  require_once('analytics_api.php');
  3.  $api = new analytics_api();
  4.  
  5.  $filters = new analytics_filters('ga:pageviews', '>=', '100');
  6.  
  7.  /**
  8.   * フィルタの追加はadd_and()とadd_or()を使う。
  9.   */
  10.  
  11.  // 2時間を秒に変換
  12.  $filters->add_and('ga:timeOnPage', '>=', 60*60*2);
  13.  
  14.  // /pg/以下のディレクトリを指定
  15.  $filters->add_and('ga:pagePath', '=~', '^/pg/*');
  16.  
  17.  // 前回引っかかった(not set)を省く
  18.  $filters->add_and('ga:pageTitle', '!=', '(not set)');
  19.  
  20.  if($api->login(GA_ID, GA_PASS)) {
  21.   $result = $api->data(
  22.   'ga:792415', // id プロファイルのNoを指定
  23.   'ga:pageTitle,ga:pagePath', // dimension ページタイトルとパス
  24.   'ga:pageviews,ga:timeOnPage',// metric ページビュー
  25.   '-ga:timeOnPage', // sort
  26.   '2009-11-01', // start
  27.   '2009-12-15', // end
  28.   '20', // max_results 取得件数
  29.   1,
  30.   $filters
  31.   );
  32.  } else {
  33.   throw new Exception('ログインに失敗しました。IDとパス要確認');
  34.  }
  35.  
  36.  echo '<pre>';
  37.  var_dump($result);
  38.  echo '</pre>';
  39.  ?>

実行結果

ん?「平均ページ滞在時間」はデータ取得後にPHPに計算させればいけるんじゃないか?

1PV辺りの閲覧時間が長いページ

PHP
  1.  <?php
  2.  require_once('analytics_api.php');
  3.  $api = new analytics_api();
  4.  
  5.  $filters = new analytics_filters('ga:pageviews', '>=', '100');
  6.  $filters->add_and('ga:pageTitle', '!=', '(not set)');
  7.  
  8.  if($api->login(GA_ID, GA_PASS)) {
  9.   $result = $api->data(
  10.   'ga:792415',
  11.   'ga:pageTitle,ga:pagePath',
  12.   'ga:pageviews,ga:timeOnPage',
  13.   false,
  14.   '2008-12-16',
  15.   '2009-12-15',
  16.   '50',
  17.   1,
  18.   $filters
  19.   );
  20.  } else {
  21.   throw new Exception('ログインに失敗しました。IDとパス要確認');
  22.  }
  23.  
  24.  $new_result = array();
  25.  $time = array();
  26.  
  27.  foreach ($result as $name => $pagedata) {
  28.   $title = $name;
  29.   $url = key($pagedata);
  30.   $view = $pagedata[$url]['ga:pageviews'];
  31.   $top = $pagedata[$url]['ga:timeOnPage'];
  32.   $viewtime = (int) $top / (int) $view;
  33.  
  34.   $new_result[] = array(
  35.   'time' => $viewtime,
  36.   'view' => sprintf('(%sビュー)', $view),
  37.   'html' => sprintf('<a href="%s">%s</a>', $url, $title)
  38.   );
  39.   // ソート用の配列
  40.   $time[] = $viewtime;
  41.  }
  42.  
  43.  array_multisort($time, SORT_DESC, SORT_NUMERIC, $new_result);
  44.  
  45.  $html = '';
  46.  foreach ($new_result as $value) {
  47.   $html .= sprintf('<dt>%s 秒: %s</dt><dd>%s</dd>',
  48.   $value['time'],
  49.   $value['view'],
  50.   $value['html']
  51.   );
  52.  }
  53.  echo '<dl>' . $html . '</dl>';
  54.  ?>

実行結果

103.585503964 秒: (883ビュー)
情報備忘録::Fireworks Web2.0 スタイル
79.2251381215 秒: (724ビュー)
WEBデザイン・ホームページ制作 KANTENA:WEBデザイン・制作:開発環境:XAMPP:複数サイトの開発:複数サイトの開発
78.4895833333 秒: (672ビュー)
WEBデザイン・ホームページ制作 KANTENA:アプリケーション:グラフィックツール:PhotoShop:チュートリアル:美麗!クールに光り輝くロゴ
78.3467181467 秒: (1295ビュー)
WEBデザイン・ホームページ制作 KANTENA:アプリケーション:グラフィックツール:PhotoShop:チュートリアル:基本的な光の作り方2
74.8068900126 秒: (3164ビュー)
WEBプログラム覚書::jQueryによる表示、非表示切り替え
74.7032590051 秒: (583ビュー)
WEBプログラム覚書::JavaScriptでテーブルの行を交互に色分け[テーブル複数ある場合]
74.4761370017 秒: (1781ビュー)
情報備忘録::eclipse + PDT 2.0 + XAMPP で作るWordpress開発環境
71.8130563798 秒: (674ビュー)
情報備忘録::XAMPPで複数の仮想サイトを発行
70.34824606 秒: (1967ビュー)
WEBプログラム覚書::表示内容の切り替え(JavaScript)
68.8610169492 秒: (1770ビュー)
情報備忘録::IE6以下で<a>以外にも:hoverを利用
67.7493897478 秒: (1229ビュー)
WEBデザイン・ホームページ制作 KANTENA:アプリケーション:グラフィックツール:PhotoShop:チュートリアル:基本的な光の作り方3
60.6055469954 秒: (649ビュー)
WEBプログラム覚書::Divの高さを合わせるスクリプト(safari対応版)
60.0206677266 秒: (629ビュー)
情報備忘録::XAMPP Apacheディレクティブ設定
58.4948006932 秒: (1154ビュー)
WEBデザイン・ホームページ制作 KANTENA:アプリケーション:グラフィックツール:PhotoShop:チュートリアル:基本的な光の作り方1
57.9776247849 秒: (581ビュー)
情報備忘録::Photoshop 描画モードの英語表記メモ
57.8890193776 秒: (1703ビュー)
WEBプログラム覚書::javascript 子要素取得のメモ
55.5392857143 秒: (560ビュー)
情報備忘録::gvim コマンドメモ
54.8470588235 秒: (2465ビュー)
WEBプログラム覚書::Divの高さを揃える方法 (css版)
47.9471766849 秒: (549ビュー)
WEBプログラム覚書::PHP5 simpleXML 動作テスト pert3
47.8242753623 秒: (552ビュー)
WEBプログラム覚書::PHP5 simpleXML 動作テスト pert1
44.9984520124 秒: (646ビュー)
WEBプログラム覚書::PHP4 static修飾子
44.7929883139 秒: (599ビュー)
WEBデザイン・ホームページ制作 KANTENA:アプリケーション:グラフィックツール:PhotoShop:チュートリアル:ワイヤフレーム風のライン
43.8128950695 秒: (791ビュー)
WEBプログラム覚書::javascript Node プロパティ
43.267310789 秒: (621ビュー)
情報備忘録::3ds MAX プラグイン Greeble
42.1652173913 秒: (805ビュー)
情報備忘録::ロリポ PHP4->PHP5移行メモ
40.266242617 秒: (2201ビュー)
情報備忘録::フリーテクスチャ ダウンロードサイト2
39.1653316245 秒: (3121ビュー)
情報備忘録::Dreamweaverで文字コードを変換する手順
38.2406287787 秒: (3308ビュー)
WEBプログラム覚書::javascript フォーム関連オブジェクトの取得
38.0988467875 秒: (607ビュー)
情報備忘録
36.8832214765 秒: (2235ビュー)
WEBプログラム覚書::PHP 参照渡し(リファレンス)と値渡し
36.536 秒: (875ビュー)
WEBプログラム覚書::JavaScript正規表現1
35.3472696246 秒: (1172ビュー)
WEBプログラム覚書::最小?IEブラウザ判定
35.0812182741 秒: (788ビュー)
WEBプログラム覚書::ウィンドウサイズを取得
32.4608399546 秒: (881ビュー)
WEBプログラム覚書::Firefoxで縦スクロールバーを常に表示
31.462962963 秒: (864ビュー)
WEBプログラム覚書
30.977124183 秒: (612ビュー)
WEBプログラム覚書::javascriptの.演算子と変数と引数
30.2274011299 秒: (708ビュー)
WEBプログラム覚書::PRIMARY KEYの追加と削除
26.0401633764 秒: (1469ビュー)
WEBプログラム覚書::PHP empty() isset() is_null() if()
26.0157367668 秒: (699ビュー)
WEBプログラム覚書::PHP クラス関数をコールする「::」演算子
25.8835294118 秒: (850ビュー)
WEBプログラム覚書::PHP シリアライズ/アンシリアライズ
25.485361093 秒: (3074ビュー)
情報備忘録::Photoshop チュートリアル 基本的な光の作り方
25.4419475655 秒: (801ビュー)
WEBデザイン・ホームページ制作 KANTENA:アプリケーション:グラフィックツール:PhotoShop:チュートリアル:一覧
23.75 秒: (772ビュー)
情報備忘録::FFFTPで.htaccessが見えない場合の対処
23.4015267176 秒: (655ビュー)
WEBデザイン・ホームページ制作 KANTENA:WEBデザイン・制作:一覧
22.3498098859 秒: (789ビュー)
WEBプログラム覚書::MySQL Primary・Index・Unique KEYについて
21.1661054994 秒: (891ビュー)
WEBデザイン・ホームページ制作 KANTENA:WEBデザイン・ホームページ制作 KANTENA
20.6123982467 秒: (1597ビュー)
WEBプログラム覚書::MySQLエラー「Column 'カラム名' in field list is ambiguous」
19.2615384615 秒: (650ビュー)
WEBプログラム覚書::PHPの改行コード
18.4599406528 秒: (1348ビュー)
WEBプログラム覚書::PHP Array関数いろいろ
14.7925925926 秒: (540ビュー)
WEBプログラム覚書::javascriptでのエラー処理 try-catch構文

んー合ってるかコレ??かなり自信ない。

なにやら↓がかなり評判がよさげ。買おうかな・・・

Google Analytics 完全解説
作者:日経BPコンサルティング Webコンサルティング部 | 価格:¥ 2,940

トラックバック(0)

コメント

コメントする
Name
Email Address
URL
TIME LINE
2012
02.10

[雑記]縦横がランダムな要素を隙間なく並べるのは無理なのか。

サイトマップ作ったんだけど、やりたかったことが出来なかった。

2012
02.08

[Ubuntu11.10]Winows XPユーザーがUbuntuを使ってみて

Windows XPとUbuntuのデュアルブート環境にしてみておもったこと。

2012
02.03

[jQuery]closest()とparents()

今から16年前Netscapeブラウザのソースコードの公開方法の会議の中で、初めてオープンソースという言葉が使われた今日、 みなさんいかがお過ごしでしょうか。

今回の投稿はそれとは関係のないjQueryのparents()とclosest()が 似てたので何が違うのか試した時のメモです。

2012
02.01

[jQuery Mobile]初期化イベントメモ

jQuery Mobileは読み込まれてから

mobileinit -> pagebeforecreate -> pagecreate -> pageinit

の順番でイベントが発生する。

2012
02.01

[WordPress]管理画面のフッタのフィルタとアクション。

時間も時間なので、あまり使用頻度の高くない微妙なネタを。

会員制サイトなどで不特定多数の人にログインさせる場合、フッタのバージョン情報は隠しておきたかったり、 こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。

2012
01.28

[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

2012
01.26

[jQuery Mobile]ダイアログ

jQuery Mobileにおけるダイアログの扱いはウインドウではなくページ。 なので通常のページと同様に扱える。ダイアログウインドウを出す。じゃなくダイアログページに遷移する。的な。

2012
01.25

[Ubuntu11.10]Ubuntuのインストール後の設定

インストール完了後の環境構築。PC起動時いちいちBIOSからブートドライブ選んで ブートするのかと思ってたら起動時にOS選択画面が出てくる。

すばらしいですね。

2012
01.24