Google Analytics API v3 をcakephpでとりあえず使う

2014年10月12日更新 view: 2667 view

analytics api が v3 に新しくなった。 古いAPIは使えなくなりそうなので、移行してみる。

流れ

  • APIアカウント作る(最新版だとやり方が違うみたいなので、アカウント作成までを参考に) http://log.noiretaya.com/132
  • ライブラリをダウンロード (phpって書いてあるの。) https://developers.google.com/analytics/devguides/reporting/core/v3/gdataLibraries
  • APIを組み込み

ライブラリ読み込みとコード

redirecturlsは、

http://www.hoge.net/defaults/test/

として、コントローラー + アクション名としておくこと。 oauth2callbackにして、routes.phpをいじるとうまく取得できない。

cakephpのバージョンによっては、iimport だと 大文字のライブラリがうまく読み込めない。 以下のファイルを改名

/google-api-php-client/src/contrib/Google_AnalyticsService.php をgoogleanalyticsservice.php に変更

○適当なコントローラー

function test()
{
    //エラーが出たらとにかくセッションを消す
    //unset($_SESSION['token']);
   
    App::import('Vendor','google_client','google-api-php-client/src/Google_Client');
    App::import('Vendor','googleanalyticsservice','google-api-php-client/src/contrib/googleanalyticsservice');
   
    $client = new Google_Client();
   
    // クライアントID
    $client->setClientId('111193373468484854158442.apps.googleusercontent.com');
    // クライアントSecret
    $client->setClientSecret('feaa2InHzPdfeafeawwXLW-F0Kpj');
    // リダイレクトURL
    $client->setRedirectUri('http://www.matomater.com/defaults/test/');
   
    //上記ページが書いてあるその下に書いてあるキー
    $client->setDeveloperKey('feawAIzeesaSyAI0ycCQKUafeawWj5feawaEvc0TWYORHChVz5wAMGC8');
   
    
    $service = new Google_AnalyticsService($client);
   
    if (isset($_GET['code'])) {
      $client->authenticate();
      $_SESSION['token'] = $client->getAccessToken();
      $this->redirect('/defaults/test/');
    }
   
    if($_SESSION['token']){
   
        $client->setAccessToken($_SESSION['token']);
        // ↓以下の例では、特定期間の"訪問数"と"ページビュー"を日付単位で取得。
        $profileId = 'ga:6412784546761';    // Google AnalyticsのProfileID
        $startDate = '2012-10-01';    // 取得対象となる日付の開始日
        $endDate = date('Y-m-d');    // 取得対象となる日付の終了日
        $metrics = 'ga:visits,ga:pageviews';    // 取得対象の属性
        $options = array(
            'dimensions' => 'ga:date'    // 取得単位
        );
        $props = $service->data_ga->get(
            $profileId, $startDate, $endDate, $metrics, $options
        );
        pr($props);
       
    } else {
        $authUrl = $client->createAuthUrl();
         print "<a href='$authUrl'>Connect Me!</a>";
    }
}

これで

  • ページにアクセス
  •  ( 認証していなければ認証ページへ )
  • アクセス数をずらっと表示

エラーが出るんだがけど

以下のようなエラーが出る場合は、profileId が間違っている。
もしくは権限がONになっていない。

Error calling GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3A64126761%2A%2A&start-date=2013-10-01&end-date=2014-07-02&metrics=ga%3Avisits%2Cga%3Apageviews&dimensions=ga%3Adate&key=AIzaSyBIRPcHVfeYX_RpKBCgdPVEQ8ITS_XCoBqmE: (400) Invalid value 'ga:641326761**'. Values must match the following regular expression: 'ga:[0-9]+'

まずは、AnalyticsのprofileIdが正しいか確認

権限がオンになっているか確認

photoBy: http://blog.somebrain.com/wp-content/uploads/Goog…
スポンサードリンク

ユーザーを追加

http://www.adminweb.jp/analytics/user/index1.html

で、管理者ユーザーにこのメールアドレスを追加。

一度認証した後はキー直書きでもOK

以下の例は、イベントトラッキングを取得するものです。

<?php
App::import('Vendor','google_client','google-api-php-client/src/Google_Client');
App::import('Vendor','googleanalyticsservice','google-api-php-client/src/contrib/googleanalyticsservice');

$client = new Google_Client();

// クライアントIDafeaw
$client->setClientId('37848457346842.apps.googleusercontent.com');
// クライアントSecret
$client->setClientSecret('ZFJfeawaa82InfweaHzfePdVnLXLW-F0Kpj');
$client->setDeveloperKey('AIzaSyAI0ycCQKUWjfwea0TWYORHChVz5wAMGC8');

$service = new Google_AnalyticsService($client);
//ここで直書き
$client->setAccessToken('{"access_token":"ya29.AHESfeesZTZTfewafawejZLBq0iZQegCB8RpUDK4OuNo-j-rEhGqkTjIZ4","token_type":"Bearer","expires_in":3600,"refresh_token":"1\/HtmYoL5ffafaefawefeawaF6N91E44nfqt4PP5EgGhLcfeawE8wXHQEi1yOx8","created":1353481419}');

$ids = 'ga:6411826761';
// 期間(スタート)
$start_date = '2012-04-01';
// 期間(エンド)
$end_date = '2012-11-30';
// メトリクス,複数の場合は , で区切る
$metrics = 'ga:totalEvents,ga:uniqueEvents';
// ディメンション,複数の場合は , で区切る
$dimensions = 'ga:eventAction,ga:eventCategory';
// ソートする項目, - をつけると降順になります
$sort = '-ga:totalEvents';
// eventCategory ac アクションだけを読み込み
$filters= 'ga:eventCategory=~^ac';


// 最大取得数
$max_results = 10;
// ディメンションやソートなどの必須でないものは、オプションとして一つの配列としてまとめます
$optParams = array('dimensions' => $dimensions, 'max-results' => $max_results ,'sort' => $sort, 'filters' => $filters);
$data = $service->data_ga->get($ids, $start_date, $end_date, $metrics, $optParams);
pr($data);
?>

その他イベントトラッキングなどの参考 旧: http://www.kagua.biz/api/gaapijp.html 新: http://www.kagua.biz/api/corerepotingapi40.html

スポンサードリンク

関連記事

関連カテゴリ