facebook twitter hatena line email

「その他サービス/GoogleAnalytics/php」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(Top10表示)
(Top10表示)
 
(同じ利用者による、間の16版が非表示)
行7: 行7:
 
==認証作成==
 
==認証作成==
 
#作成したプロジェクトを選択
 
#作成したプロジェクトを選択
#認証情報リンクを選択
+
#APIと認証/認証情報リンクを選択
 
#新しいクライアントIDを作成ボタンを押す
 
#新しいクライアントIDを作成ボタンを押す
 
#サービスアカウントを選択
 
#サービスアカウントを選択
行14: 行14:
  
 
==analyticsAPIを有効に==
 
==analyticsAPIを有効に==
#APIリンクを選択
+
#左メニューの"API"リンクを選択
#AnalyticsAPIを選択
+
#"Analytics API"を選択
 
#有効にするボタンを押す
 
#有効にするボタンを押す
  
 
==analyticsサイト側設定==
 
==analyticsサイト側設定==
#アナリティクス設定リンクを押す
+
#上部の"アナリティクス設定"リンクを押す
 
#プロパティのユーザ管理を押す
 
#プロパティのユーザ管理を押す
#メールアドレス欄にjsonファイル内のclient_email文字列を追加
+
#メールアドレス欄にjsonファイル内のclient_email(1405xxxxxxxx-46f988f8xxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com)文字列を追加
#ビュー設定のビューIDをメモしておく
+
#ビュー設定のビューIDをメモしておく(phpからの呼び出しに使う)
  
 
==phpライブラリDL==
 
==phpライブラリDL==
行34: 行34:
 
   private $_client_id = 'xxxxxxx-xxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
 
   private $_client_id = 'xxxxxxx-xxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
 
   private $_service_account_name = 'xxxxxxxxx-xxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com';
 
   private $_service_account_name = 'xxxxxxxxx-xxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com';
   private $_key_file =  __DIR__ . '/sample-analytics-xxxxxxxxxxx.p12';
+
   private $_key_file =  'sample-analytics-xxxxxxxxxxx.p12';
   private $_view_id = 'ga:xxxxxxxxxx';
+
   private $_view_id = 'ga:xxxxxxxxxx'; //ビューIDを入力
 
   public function __construct()
 
   public function __construct()
 
   {
 
   {
行45: 行45:
 
       $this->_service_account_name,
 
       $this->_service_account_name,
 
       array('https://www.googleapis.com/auth/analytics'),
 
       array('https://www.googleapis.com/auth/analytics'),
       @file_get_contents($this->_key_file)
+
       @file_get_contents(__DIR__ . '/' . $this->_key_file)
 
     ));
 
     ));
 
     $this->_client = $client;
 
     $this->_client = $client;
行61: 行61:
 
       array(
 
       array(
 
         'dimensions'  => 'ga:pageTitle,ga:pagePath',
 
         'dimensions'  => 'ga:pageTitle,ga:pagePath',
         'sort'>- => '-ga:pageviews',
+
         'sort'  => '-ga:pageviews',
 
         // 'filters' => 'ga:pagePath=~/tag/',
 
         // 'filters' => 'ga:pagePath=~/tag/',
 
         'max-results' => '10' //件数
 
         'max-results' => '10' //件数
行68: 行68:
 
     return $result['rows'];
 
     return $result['rows'];
 
   }
 
   }
  }
+
}
 
  $api = new AnalyticsApiModel();
 
  $api = new AnalyticsApiModel();
 
  $all = $api->findAllTop10(time());
 
  $all = $api->findAllTop10(time());
行93: 行93:
 
     'dimensions' => 'rt:medium');
 
     'dimensions' => 'rt:medium');
 
     $results = $analytics->data_realtime->get(
 
     $results = $analytics->data_realtime->get(
             "ga:".PROFILE_ID,
+
             $this->_view_id,
 
             'rt:activeUsers',
 
             'rt:activeUsers',
 
             $optParams
 
             $optParams
行134: 行134:
 
     [1] => 10
 
     [1] => 10
 
  )
 
  )
 +
 +
==User does not have sufficient permissions for this profileエラー==
 +
view id が間違えてないか確認
  
 
==参考==
 
==参考==

2018年5月21日 (月) 21:07時点における最新版

analyticsをphpで操作

プロジェクト作成

  1. https://console.developers.google.com/project
  2. "sample-analytics"などと入れる

認証作成

  1. 作成したプロジェクトを選択
  2. APIと認証/認証情報リンクを選択
  3. 新しいクライアントIDを作成ボタンを押す
  4. サービスアカウントを選択
  5. 秘密鍵のjsonファイルを保存
  6. p12ファイルも保存

analyticsAPIを有効に

  1. 左メニューの"API"リンクを選択
  2. "Analytics API"を選択
  3. 有効にするボタンを押す

analyticsサイト側設定

  1. 上部の"アナリティクス設定"リンクを押す
  2. プロパティのユーザ管理を押す
  3. メールアドレス欄にjsonファイル内のclient_email(1405xxxxxxxx-46f988f8xxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com)文字列を追加
  4. ビュー設定のビューIDをメモしておく(phpからの呼び出しに使う)

phpライブラリDL

git clone https://github.com/google/google-api-php-client.git

Top10表示

<?php
class AnalyticsApiModel
{
  private $_client;
  private $_client_id = 'xxxxxxx-xxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
  private $_service_account_name = 'xxxxxxxxx-xxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com';
  private $_key_file =  'sample-analytics-xxxxxxxxxxx.p12';
  private $_view_id = 'ga:xxxxxxxxxx'; //ビューIDを入力
  public function __construct()
  {
    require_once __DIR__ . "/google-api-php-client/src/Google/autoload.php";
    $client = new Google_Client();
    $client->setApplicationName("Google Analytics PHP Starter Application");
    $client->setClientId($this->_client_id);
    $client->setAssertionCredentials(new Google_Auth_AssertionCredentials(
      $this->_service_account_name,
      array('https://www.googleapis.com/auth/analytics'),
      @file_get_contents(__DIR__ . '/' . $this->_key_file)
    ));
    $this->_client = $client;
  }
  public function findAllTop10($time)
  {
    $analytics = new Google_Service_Analytics($this->_client);
    $end_date = date("Y-m-d", $time);
    $start_date = date("Y-m-d", $time - 86400);
    $result = $analytics->data_ga->get(
      $this->_view_id,
      $start_date,
      $end_date,
      'ga:pageviews',
      array(
        'dimensions'  => 'ga:pageTitle,ga:pagePath',
        'sort'  => '-ga:pageviews',
        // 'filters' => 'ga:pagePath=~/tag/',
        'max-results' => '10' //件数
      )
    );
    return $result['rows'];
  }
}
$api = new AnalyticsApiModel();
$all = $api->findAllTop10(time());
print nl2br(print_r($all,1));
//Array
//(
//   [0] => Array
//       (
//           [0] => テストページ1
//           [1] => /test1
//           [2] => 1772
//       )
//   [1] => Array
//       (
//           [0] => テストページ2
//           [1] => /test2
//           [2] => 925
//       )

リアルタイム数を取得

リアルタイムなコンテンツURLを取得することはできないみたい(2015/6時点)

try {
   $optParams = array(
   'dimensions' => 'rt:medium');
   $results = $analytics->data_realtime->get(
           $this->_view_id,
           'rt:activeUsers',
           $optParams
   );
   $totals = $results->getTotalsForAllResults();
   print nl2br(print_r($totals,1)); // 下記*1に示す
   if (count($results->getRows()) > 0) {
       foreach ($results->getRows() as $row) {
           print nl2br(print_r($row,1)); // 下記*2に示す
       }
   }
} catch (apiServiceException $e) {
   echo $e->getMessage();
}
*1
Array
(
    [rt:activeUsers] => 721
)
*2
Array
(
   [0] => DIRECT
   [1] => 383
)
Array
(
    [0] => ORGANIC
    [1] => 327
)
Array
(
    [0] => REFERRAL
    [1] => 1
)
Array
(
    [0] => SOCIAL
    [1] => 10
)

User does not have sufficient permissions for this profileエラー

view id が間違えてないか確認

参考

http://www.karakaram.com/google-analytics-api-batch

http://syncer.jp/google-analytics-api-tutorial

公式リアルタイムページ https://developers.google.com/analytics/devguides/reporting/realtime/v3/reference/data/realtime/get?hl=ja