masalibの日記

システム開発、運用と猫の写真ブログです

Google Analytics APIでデータを取得

masalib.hatenablog.com

記事データを取得したのでこれをもとに
Google Analytics APIを使用して取得します
ただ接続するLibraryが変わったみたいなので
hello world的なところから始めました

google developer consoleの設定

まずはgoogle developer console(https://console.developers.google.com/?hl=JA)に接続する
やった事ない人はプロジェクトの作成をおこなう

f:id:masalib:20161029022907p:plain

プロジェクト作成後にapiの検索するところで「ana」と入力する

f:id:masalib:20161029023422p:plain

すると下記がリストが表示されるのでそちらを有効にする
・Analytics API
Google Analytics Reporting API

この API は有効になっていますが、認証情報を作成するまでプロジェクトで使用することはできません。
[認証情報に進む] をクリックして、今すぐ作成してください(強く推奨)。

とアラート表示される
f:id:masalib:20161029024916p:plain
認証情報に進むのリンクを押す

f:id:masalib:20161029025346p:plain

プロジェクトへの認証情報の追加の画面が表示されるので
サービスアカウントをクリックする

f:id:masalib:20161029025824p:plain

サービスアカウント作成のリンクを押す

f:id:masalib:20161029030727p:plain

サービスアカウント名を入力して
役割をプロジェクトの観覧者を選択する
新しい秘密鍵の提供を選択し、キータイプをJSON形式にする
作成ボタンを押すとjsonファイルの保存画面が表示される



GoogleAnalyticsに設定とVIEW_ID確認

サービスアカウントをGoogleAnalytics に登録する

GoogleAnalyticsにログイン
 ー> 1・管理
 ー> 2・アカウント
 ー> 3・ユーザー管理
 ー> 4・権限を付与するユーザー
 先ほど作成したユーザーをいれる
 (もしわからない場合はjsonファイルに記載されているclient_emailの部分)
 ー> 5・権限(初期設定でなしの部分)を表示と分析を選択する

f:id:masalib:20161029103131p:plain

表示したいGoogleAnalyticsのVIEW_IDを取得する

GoogleAnalyticsにログイン
 ー> 1・管理
 ー> 2・ビュー
 ー> 3・ビュー設定

f:id:masalib:20161029103413p:plain

  基本設定のビューIDをメモする

f:id:masalib:20161029103605p:plain


クライアントライブラリをインストールする

やり方は何個かあります

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

or

wget https://github.com/google/google-api-php-client/archive/master.zip

or

php -r "readfile('https://getcomposer.org/installer');" | php
mv composer.phar /usr/local/bin/composer
composer require google/apiclient:^2.0

自分はcomposerで入れました


あとはプログラムを設置する

<?php
// インストールしたライブラリーを読み込ませる Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';

$analytics = initializeAnalytics();
$response = getReport($analytics);
printResults($response);

function initializeAnalytics()
{
  $KEY_FILE_LOCATION = __DIR__ . '/jsondata/blogtest-7cca6f19cd2e.json';

  //接続用のクライアントの設定.
  $client = new Google_Client();
  $client->setApplicationName("Hello Analytics Reporting");
  $client->setAuthConfig($KEY_FILE_LOCATION);
  //アクセスするapiのスコープを設定する
  //わからない場合はhttps://developers.google.com/identity/protocols/googlescopes?hl=jaを参考にする
  $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
  $analytics = new Google_Service_AnalyticsReporting($client);

  return $analytics;
}

function getReport($analytics) {

  // Replace with your view ID, for example XXXX.
  $VIEW_ID = "62906603";

  // Create the DateRange object.
  $dateRange = new Google_Service_AnalyticsReporting_DateRange();
  //$dateRange->setStartDate("7daysAgo");
  //$dateRange->setEndDate("today");
  //日付指定もできる
  $dateRange->setStartDate("2016-09-27");
  $dateRange->setEndDate("2016-10-27");

  // 取得したい内容をセットする.今回はセッションを設定する
  //わからない場合はhttps://developers.google.com/analytics/devguides/reporting/core/dimsmetsを参考にする
  $sessions = new Google_Service_AnalyticsReporting_Metric();
  $sessions->setExpression("ga:sessions");
  $sessions->setAlias("sessions");

// リクエストするために情報をまとめるCreate the ReportRequest object.
  $request = new Google_Service_AnalyticsReporting_ReportRequest();
  $request->setViewId($VIEW_ID);
  $request->setDateRanges($dateRange);
  $request->setMetrics(array($sessions));

// リクエストする
  $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
  $body->setReportRequests( array( $request) );
  return $analytics->reports->batchGet( $body );
}

function printResults($reports) {
  for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) {
    $report = $reports[ $reportIndex ];
    $header = $report->getColumnHeader();
    $dimensionHeaders = $header->getDimensions();
    $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
    $rows = $report->getData()->getRows();

    for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {
      $row = $rows[ $rowIndex ];
      $dimensions = $row->getDimensions();
      $metrics = $row->getMetrics();
      for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) {
        print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n");
      }

      for ($j = 0; $j < count( $metricHeaders ) && $j < count( $metrics ); $j++) {
        $entry = $metricHeaders[$j];
        $values = $metrics[$j];
        print("Metric type: " . $entry->getType() . "\n" );
        for ( $valueIndex = 0; $valueIndex < count( $values->getValues() ); $valueIndex++ ) {
          $value = $values->getValues()[ $valueIndex ];
          print($entry->getName() . ": " . $value . "\n");
        }
      }
    }
  }
}

documentrootの配下は以下のとおり
f:id:masalib:20161029103736j:plain


はまったところ

公式のサンプルソースがうごかなかった
バージョンしたみたいなのですが
サンプルソースに反映してくれていないみたい

公式のサンプルソースだと

$cred = new Google_Auth_AssertionCredentials(
    $service_account_email,
    array(Google_Service_Analytics::ANALYTICS_READONLY),
    $key
);

Class 'Google_Auth_AssertionCredentials' not found
とエラーになる

おいいい!!!!
色々、検索してみたところgithubに記載されていた・・・
見てねぇーーー
https://github.com/google/google-api-php-client/blob/master/UPGRADING.md#google_auth_assertioncredentials-has-been-removed

f:id:masalib:20161029104205p:plain

結果

f:id:masalib:20161029104419j:plain

セッション数がとれました

今後

条件や取得内容などを追加する予定

参考url

http://www.tam-tam.co.jp/tipsnote/program/post9065.html
このソースがうごかなかった

composerのインストール
http://qiita.com/CatCable/items/02364adacf36410f449e