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。これを把握すれば自在に情報を取得できそう。

参照サイト
  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. ?>

実行結果


Warning: require_once(analytics_api.php): failed to open stream: No such file or directory in /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2009/12/phpgoogle_analytics.php on line 203

Fatal error: require_once(): Failed opening required 'analytics_api.php' (include_path='/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear-pear.php.net/Archive_Tar:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear-pear.php.net/Calendar:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear-pear.php.net/Console_Getopt:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear-pear.php.net/Net_UserAgent_Detect:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear-pear.php.net/Net_UserAgent_Mobile:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear-pear.php.net/PEAR:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear-pear.php.net/Structures_Graph:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear-pear.php.net/Text_Highlighter:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear-pear.php.net/XML_Parser:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear-pear.php.net/XML_Util:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear/archive_tar:/home/users/1/lolipop.jp-dp07173486/web/_/vendor/pear/console_getopt:/home/u in /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2009/12/phpgoogle_analytics.php on line 203