Google AnalyticsのAPIをPHPから叩く


Blogのアクセスレポートで利用してただけど、先日Fenrirのデベロッパーズブログで見かけたのでちょっと書いてみる。

関連

Google Analytics API を利用した人気エントリー PHP スクリプト (フェンリル | デベロッパーズブログ)
【Web】Google Analytics API の簡単に出来るお試し方法 (フェンリル | デベロッパーズブログ)

上記エントリ内では、「GAPI」というクラスを利用していますが、
個人的には「Google Analytics API Class」の方が好きです。
(野良ライブラリなのは同じですが)

Google Analytics API class for PHP | Ask About PHP

以下、それを使ったサンプルコード。



サンプルコード

require_once 'googleanalytics.class.php';
//設定
$email     = 'hoge@fuga.com';
$password  = 'password';
$profileId = 'ga:xxxxxx';
//6月に最も閲覧されたエントリ上位10エントリの情報を取得します
//取得データはURL、タイトル、閲覧数です
$ga = new GoogleAnalytics($email, $password);
$ga->setProfile($profileId);
$ga->setDateRange('2011-06-01', '2011-06-30');
$report = $ga->getReport(array(
'dimensions'  => urlencode('ga:pagePath,ga:pageTitle'),
'metrics'     => urlencode('ga:pageviews'),
'filters'     => urlencode('ga:pagePath=~^/archives/20.*\.php$'),
'sort'        => urlencode('-ga:pageviews'),
'max-results' => urlencode(10)
));


このライブラリのメリット/デメリット

メリット

  • 容量が軽い。8KBしかありません。
  • 設定とデータ取得とが分けられているので連続してデータを取得するのに向いています。
  • 要素名=>要素で取得条件を設定するので視認性がよいです

デメリット

  • dimensionsで設定した内容の取得に難があります。


メリットは書いたとおり。
シンプルなので扱いやすいです。

デメリットについては、結構面倒。
返ってくる結果は連想配列になってるんですが、キーがdimensions、値がmetricsという形式。
dimensionsに複数の値が指定されている場合には、「~~」で繋がっています。

返り値例:

array
'/archives/2008/12/softalk.php~~SofTalk - ゆっくりボイス作成ソフト。 - nplll' =>
array
'ga:pageviews' => string '1883'

GAPIのサンプルを見る限り、エントリのタイトルが、$result->getPageTitle()で取得できています。
これはかなり羨ましい。
返り値はオブジェクトで欲しいよねぇ…

今のところ大して困ってないのでこのまま使ってますが、
GAPIをベースにしつつ、googleanalyticsのメリットを取り入れながら自作してみるのも良いかも。
どうせ、ラッパーを書いて使ってるわけだし。
やるかどうかは未定ですが。



ちなみに、APIを導入するまでは、アクセス解析の度にGoogleAnalyticsのページからデータを抽出、
それをテキストエディタで加工してエントリにしていて、果てしなく面倒でした。

APIの存在に気付いて良かった…



追記

朝起きてもう1個デメリット思い出しました。
値を入れるのにいちいちurlencodeさせられるのがだるい…
なんでライブラリで実装していないのかなー