2009年12月05日 02:19
パーマリンク | http://www.kantenna.com/cgi-bin/mt/mt-tb.cgi/501
google AnalyticsのAPIを利用してアクセスの多いページの情報を取得します。 利用するライブラリは↓
気になっていたcurlが使ってあっていいサンプルになりそう。
利用するのはanalytics_api::data()。引数はたぶんこんな感じ。
必須のパラメータ。サイトのプロファイルID。 IDは 「Analytics 設定 > プロファイル設定」で確認できる。

必須のパラメータ。何のデータを取るかを指定。 ga:pagePathとかga:browserとか。 複数指定する場合はカンマで区切るga:browser,ga:browserVersion
必須のパラメータ。何のデータを基準にするか的な指定。訪問者数ならga:visitsとか。 複数指定はカンマで区切る。ga:visits,ga:pageviews
ソートの指定。指定しないと$metricに基づく。
期間の始まりを指定。指定しないと実行日前日から1ヶ月分になる。予め用意されている値には today、yesterday、weekがある。
指定する場合はYYYY-MM-DDで。デフォルトは前日。
取得するMAX件数。デフォルトは10件。最高でも1000件?
取得するページのインデックス。デフォルトはページ目から。
フィルター。analytics_filtersってクラスが用意されているので 何かしらフィルターをかけれるっぽいけど詳細は不明
デバッグ用?デフォルトはfalse
重要なパラメーターはDimensionsとMetrics。これを把握すれば自在に情報を取得できそう。
require_once('/analytics_api.php');
$api = new analytics_api();
// 引数はログイン用のメールアドレスとパス
if($api->login(MAIL, PASS)) {
$result = $api->data(
'ga:792415', // id プロファイルのNoを指定
'ga:pageTitle,ga:pagePath', // dimension ページタイトルとパス
'ga:pageviews', // metric ページビュー
false, // sort
'2008-11-01', // start
'2008-11-30', // end
'25' //max_results 取得件数
);
} else {
throw new Exception('ログインに失敗しました。IDとパス要確認');
}
echo '<pre>';
var_dump($result);
echo '</pre>';
実行結果はこちら
キーが日本語でなんだか気持ち悪いけどまぁいいか。 あとはforeachとかでまわすだけ。
$html = '';
foreach ($result as $name => $pagedata) {
$title = $name;
$url = key($pagedata);
$view = $pagedata[$url]['ga:pageviews'];
$html .= sprintf(
'<li><a href="%s">%s(%sビュー)</a></li>',
$url,$title,$view
);
}
echo '<ol>' . $html . '</ol>';
んんっ!?(not set)ってなんだ・・・?フィルタ使えばこいうのはじけるのかな?
とりあえず置いておいてデータの比較をしてみる。
Analyticsのカスタムレポート作成から新規作成でこんな感じで設定。

レポートプレビューでレポートを表示して期間をあわせると こんな感じで出てくる。
なんか似てるけど結構違う結果。なぜだろ?? 数字はもしかしたらタイムゾーンの違いで誤差出てるのかも? それかAPIのデータとAnalyticsのデータが異なってるか?
ぼくの書いたスクリプトが間違ってたらごめんなさいw
まっ大体あってるからいいか・・・効果測定するわけじゃないし・・・と言い訳しながら終わります。
/ 金額 : ¥ 3,990
1-5
6-10
/ 金額 : ¥ 3,465
/ 金額 : ¥ 3,150
/ 金額 : ¥ 2,699
/ 金額 : ¥ 3,497
/ 金額 : ¥ 3,675