CakePHPからGoogle Analytics APIを使う方法
nanapiのシステムで一部使う必要があったので、ちょっとチャレンジしてみました。
Google Analytics APIってちょっと面倒そうなイメージがあったので今まで敬遠していたのですが、まぁそうも言っていられなかったわけです。日本語ドキュメントがあると嬉しかったのですが、あんまり良質なのがないので本家を頑張って読み解きました。
ライブラリを利用する
まぁいくつかライブラリはあるわけですが、PHPは公式のライブラリが用意されていません。
ただ、公式のヘルプに紹介してあるものがあったのでこちらを利用しました。画面下部にある、PHP5 OOP Interfaceというやつです。
http://code.google.com/intl/ja/apis/analytics/docs/gdata/gdataLibraries.html
使う前に取得しておくべきもの
Google Analytics APIは認証に3つのパラメータが必要になります。
- emailアドレス (analyticsの認証設定がされているもの」)
- パスワード (上記のパスワード)
- profile id (後述)
profile idは下記の画面から取得することができます。
普通にPHPから使ってみる
まず、CakePHPからではなく普通にPHPから使ってみましょう。まぁこれはサンプルどおりでいけますね。PageviewとVisitorを取得してみましょう。
<?php define('ga_email','[email protected]'); define('ga_password','your password'); define('ga_profile_id','your profile id'); require 'gapi.class.php'; $ga = new gapi(ga_email,ga_password); $ga->requestReportData( ga_profile_id, array('browser','browserVersion'), // ブラウザとブラウザのバージョン単位でデータを取得します array('pageviews','visits') // 取得するデータは、pageviewとvisitsを取得します ); ?> array(30) { [0]=> object(gapiReportEntry)#7 (2) { ["metrics:private"]=> array(2) { ["pageviews"]=> int(1) ["visits"]=> int(1) } ["dimensions:private"]=> array(2) { ["browser"]=> string(16) "Ask Jeeves/Teoma" ["browserVersion"]=> string(9) "(not set)" } } }
実行すると上記のような結果が返ってきます。上記の例はブラウザとブラウザのバージョン単位で取得しています。次は日付単位で取得してみましょう。
<?php define('ga_email','[email protected]'); define('ga_password','your password'); define('ga_profile_id','your profile id'); require 'gapi.class.php'; $ga = new gapi(ga_email,ga_password); $ga->requestReportData(ga_profile_id, array('date'), // 日付ごとにデータを取得します array('pageviews','visits'), // pageviewとvistisを取得します null, // ソート条件 null, // filter条件 '2010-01-01', //開始日 '2010-01-31' // 終了日 ); var_dump($ga->getResults()); ?> array(7) { [0]=> object(gapiReportEntry)#7 (2) { ["metrics:private"]=> array(2) { ["pageviews"]=> int(51097) ["visits"]=> int(18795) } ["dimensions:private"]=> array(1) { ["date"]=> string(8) "20100501" } } [1]=> object(gapiReportEntry)#12 (2) { ["metrics:private"]=> array(2) { ["pageviews"]=> int(51615) ["visits"]=> int(19775) } ["dimensions:private"]=> array(1) { ["date"]=> string(8) "20100502" } } }
このようにすることで日付単位で、pageviewsやvistsの取得を行うことができます。これはレポートとかに使うことがありそうですね。
その他にも、filterでページを指定することや、sort条件をつけることも可能です。なれるまでコツがいりますが、一旦なれてしまうと比較的らくに取得できるようになります。
フィルタなどの条件の詳細の指定方法は下記のドキュメントに記載されています。
GitHub - erebusnz/gapi-google-analytics-php-interface: GA:PI() - Google Analytics PHP Interface
cakephpから利用する
さて、最後にcakephpから利用しましょう。といってもApp::importするだけでらくに使えます。
まずは、vendorの下にライブラリをおきましょう。下記の場所に配置してください。
$CAKE_ROOT/app/vendors/gapi/gapi.class.php
上記の様に配置したら、あとは動かすだけです。
<?php App::import('Vendor','gapi',array('file'=>'gapi'.DS.'gapi.class.php')); class GoogleAnalyticsController extends AppController { var $name = 'GoogleAnaytics'; var $uses = false ; function index(){ $ga_email = '[email protected]'; $ga_password = 'password'; $ga_profile_id = 'profile_id'; $ga = new gapi($ga_email,$ga_password); $ga->requestReportData( $ga_profile_id, array('date'), array('pageviews','visits'), array('date'), $filter , $start_date , $end_date ); debug( $ga->getResults() ); } }
と、まぁこんな感じで取得できます。注意事項としては、結構重いAPIなので、同じ条件で頻繁に絞り込む時はCacheするのが良いでしょうね。
他にもいくつかライブラリはあるようなので興味ある方はチャレンジしてみてください。
もうちょっと簡単に取得できるライブラリがほしいところですねぇ。作ろうかな・・・
参考リンク
- http://code.google.com/intl/ja/apis/analytics/docs/gdata/gdataDeveloperGuide.html
- GitHub - erebusnz/gapi-google-analytics-php-interface: GA:PI() - Google Analytics PHP Interface
- PHP class for using the Google Analytics API | The Electric Toolbox Blog
- http://www.askaboutphp.com/63/google-analytics-api-class-for-php.html