KANTENNA.COM

Solarized

HOME > WEBプログラム覚書 > [PHP]google Analytics からアクセスの多いページの情報を取得

[PHP]google Analytics からアクセスの多いページの情報を取得

google AnalyticsのAPIを利用してアクセスの多いページの情報を取得します。 利用するライブラリは↓

気になっていたcurlが使ってあっていいサンプルになりそう。

指定期間のPV数の多いページを取得

利用するのはanalytics_api::data()。引数はたぶんこんな感じ。

@param string $id

必須のパラメータ。サイトのプロファイルID。 IDは 「Analytics 設定 > プロファイル設定」で確認できる。

@param string $dimension

必須のパラメータ。何のデータを取るかを指定。 ga:pagePathとかga:browserとか。 複数指定する場合はカンマで区切るga:browser,ga:browserVersion

@param string $metric

必須のパラメータ。何のデータを基準にするか的な指定。訪問者数ならga:visitsとか。 複数指定はカンマで区切る。ga:visits,ga:pageviews

@param string $sort

ソートの指定。指定しないと$metricに基づく。

@param string $start

期間の始まりを指定。指定しないと実行日前日から1ヶ月分になる。予め用意されている値には today、yesterday、weekがある。

@param string $end

指定する場合はYYYY-MM-DDで。デフォルトは前日。

@param integer $max_results

取得するMAX件数。デフォルトは10件。最高でも1000件?

@param integer $start_index

取得するページのインデックス。デフォルトはページ目から。

@param string|analytics_filters

フィルター。analytics_filtersってクラスが用意されているので 何かしらフィルターをかけれるっぽいけど詳細は不明

@param boolean $debug

デバッグ用?デフォルトはfalse

重要なパラメーターはDimensionsとMetrics。これを把握すれば自在に情報を取得できそう。

PHP
  1.  <?php
  2.  require_once('/analytics_api.php');
  3.  $api = new analytics_api();
  4.  
  5.  // 引数はログイン用のメールアドレスとパス
  6.  if($api->login(MAIL, PASS)) {
  7.   $result = $api->data(
  8.   'ga:792415', // id プロファイルのNoを指定
  9.   'ga:pageTitle,ga:pagePath', // dimension ページタイトルとパス
  10.   'ga:pageviews', // metric ページビュー
  11.   false, // sort
  12.   '2008-11-01', // start
  13.   '2008-11-30', // end
  14.   '25' //max_results 取得件数
  15.   );
  16.  } else {
  17.   throw new Exception('ログインに失敗しました。IDとパス要確認');
  18.  }
  19.  
  20.  echo '<pre>';
  21.  var_dump($result);
  22.  echo '</pre>';
  23.  ?>

実行結果はこちら

キーが日本語でなんだか気持ち悪いけどまぁいいか。 あとはforeachとかでまわすだけ。

PHP
  1.  <?php
  2.  $html = '';
  3.  foreach ($result as $name => $pagedata) {
  4.   $title = $name;
  5.   $url = key($pagedata);
  6.   $view = $pagedata[$url]['ga:pageviews'];
  7.  
  8.   $html .= sprintf(
  9.   '<li><a href="%s">%s(%sビュー)</a></li>',
  10.   $url,$title,$view
  11.   );
  12.  }
  13.  echo '<ol>' . $html . '</ol>';
  14.  ?>

実行結果

  1. WEBプログラム覚書::PHP 参照渡し(リファレンス)と値渡し(420ビュー)
  2. WEBプログラム覚書::jQueryによる表示、非表示切り替え(371ビュー)
  3. 情報備忘録::Photoshop チュートリアル 基本的な光の作り方(308ビュー)
  4. 情報備忘録::eclipse + PDT 2.0 + XAMPP で作るWordpress開発環境(288ビュー)
  5. 情報備忘録::Dreamweaverで文字コードを変換する手順(278ビュー)
  6. WEBプログラム覚書::javascript フォーム関連オブジェクトの取得(240ビュー)
  7. WEBプログラム覚書::PHP empty() isset() is_null() if()(228ビュー)
  8. WEBプログラム覚書::表示内容の切り替え(JavaScript)(207ビュー)
  9. WEBプログラム覚書::MySQLエラー「Column 'カラム名' in field list is ambiguous」(204ビュー)
  10. WEBプログラム覚書::PHP Array関数いろいろ(201ビュー)
  11. 情報備忘録::googleのJavaScriptのツール Closure Tools(195ビュー)
  12. 情報備忘録::IE6以下で<a>以外にも:hoverを利用(186ビュー)
  13. WEBプログラム覚書::javascript 子要素取得のメモ(185ビュー)
  14. WEBプログラム覚書::Divの高さを揃える方法 (css版)(174ビュー)
  15. WEBプログラム覚書::最小?IEブラウザ判定(155ビュー)
  16. 情報備忘録::フリーテクスチャ ダウンロードサイト2(146ビュー)
  17. WEBデザイン・ホームページ制作 KANTENA:アプリケーション:グラフィックツール:PhotoShop:チュートリアル:一覧(133ビュー)
  18. WEBデザイン・ホームページ制作 KANTENA:アプリケーション:グラフィックツール:PhotoShop:チュートリアル:基本的な光の作り方2(110ビュー)
  19. WEBプログラム覚書::ActionScript3 メモ3 [基礎]Arrayクラス(101ビュー)
  20. WEBプログラム覚書::ウィンドウサイズを取得(99ビュー)
  21. 情報備忘録::Eclipseの用語とかショートカットとかメモ(98ビュー)
  22. WEBデザイン・ホームページ制作 KANTENA:アプリケーション:グラフィックツール:PhotoShop:チュートリアル:基本的な光の作り方1(96ビュー)
  23. WEBプログラム覚書::ActionScript3.0 表示リスト メモ(92ビュー)
  24. WEBデザイン・ホームページ制作 KANTENA:WEBデザイン・制作:開発環境:XAMPP:複数サイトの開発:複数サイトの開発(86ビュー)
  25. WEBプログラム覚書::jQuery プラグイン Slide boxメモ(85ビュー)

んんっ!?(not set)ってなんだ・・・?フィルタ使えばこいうのはじけるのかな?

とりあえず置いておいてデータの比較をしてみる。

カスタムレポート作成

Analyticsのカスタムレポート作成から新規作成でこんな感じで設定。

レポートプレビューでレポートを表示して期間をあわせると こんな感じで出てくる。

なんか似てるけど結構違う結果。なぜだろ?? 数字はもしかしたらタイムゾーンの違いで誤差出てるのかも? それかAPIのデータとAnalyticsのデータが異なってるか?

ぼくの書いたスクリプトが間違ってたらごめんなさいw

まっ大体あってるからいいか・・・効果測定するわけじゃないし・・・と言い訳しながら終わります。

トラックバック(2)

2009年12月19日 01:01

[PHP]Google Analytics からデータを取得 part2WEBプログラム覚書

「WEBプログラム覚書::[PHP]google Analytics からアクセスの多いページの情報を取得」に引き続きGoogle Analytics A...続きを読む

2011年9月14日 13:18

[SPL]SplFileInfo WEBプログラム覚書

ファイルの情報をオブジェクト指向っぽく取得したりするためのクラスSplFileInfo 続きを読む

コメント

コメントする
Name
Email Address
URL
TIME LINE
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
2012
01.23

MinGW+Mintty+Git

MinGW+Mintty+Gitをやろうとして失敗に終わった。このエントリーには収穫できるものはありません。