masalibの日記

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

Google Analyticsのランディングページのデータを取得する

masalib.hatenablog.com

前回の続きでです
Google AnalyticsAPI(for php)で
helloworld的な事が
目的のランディングページのデータを取得したいと思います

作ったプログラム

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

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

var_dump($response);
//google のサンプルだとちょっと使えなかった・・・あとで改変する
//printResults($response);

function initializeAnalytics()
{
	//ダウンロードしたjsonファイル
  $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 = "ビューID";

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

  // ディメンション(データの属性)の設定
  $landingPagePath = new Google_Service_AnalyticsReporting_Dimension();
  $landingPagePath->setName("ga:landingPagePath");

  // 取得したい内容をセットするCreate the Metrics object.
  //わからない場合はhttps://developers.google.com/analytics/devguides/reporting/core/dimsmetsを参考にする
  //取得したいカラム(Metric)ごとにオブジェクトを作って設定する

  // セッション率
  $sessions = new Google_Service_AnalyticsReporting_Metric();
  $sessions->setExpression("ga:sessions");
  $sessions->setAlias("sessions");

  // 新規セッション率
  $sessionsPerUser = new Google_Service_AnalyticsReporting_Metric();
  $sessionsPerUser->setExpression("ga:sessionsPerUser");
  $sessionsPerUser->setAlias("sessionsPerUser");

  // ページビュー
  $pageviews = new Google_Service_AnalyticsReporting_Metric();
  $pageviews->setExpression("ga:pageviews");
  $pageviews->setAlias("pageviews");

  //表示する順番の制御(Metricで指定した値を使う)
  $ordering = new Google_Service_AnalyticsReporting_OrderBy();
  $ordering->setFieldName("ga:sessions");
  $ordering->setOrderType("VALUE");
  $ordering->setSortOrder("DESCENDING");

// リクエストするために情報をまとめるCreate the ReportRequest object.
//
  $request = new Google_Service_AnalyticsReporting_ReportRequest();
  $request->setViewId($VIEW_ID);
  $request->setDateRanges($dateRange);
  $request->setMetrics(array($sessions,$sessionsPerUser,$pageviews));
  $request->setDimensions(array($landingPagePath));
  // 表示順
  $request->setOrderBys($ordering); // note this one!
  //ページサイズの設定
  $request->setPageSize(1000);

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


結果

サンプルであった表示する関数は使えなかったので
今のところはvar_dumpです
あとはループさせてDBにいれるだけです

ヘッダー部分の出力結果
f:id:masalib:20161031215000p:plain

実際の内容
f:id:masalib:20161031215018p:plain

結果の補足
自分のページはページパス+ページタイトルにしています
そのため、普通の表示とは違います
一般的にはページパスのみです


解説

ディメンション(データの属性)の設定

ディメンションとは
https://support.google.com/analytics/answer/1033861?hl=ja

簡単にいうとデータの属性(ランディングページや離脱ページとか)

これもどのディメンションを指定すればいいのか、わからないかったので
1度英語、表記に変更してさがしました

$landingPagePath = new Google_Service_AnalyticsReporting_Dimension();
$landingPagePath->setName("ga:landingPagePath");
  ・
  ・
  $request->setDimensions(array($landingPagePath));
複数のカラム(Metric )に対応

前回は1つのカラム(Metric)しか取れなかったのを複数とれるようにした

  // セッション率
  $sessions = new Google_Service_AnalyticsReporting_Metric();
  $sessions->setExpression("ga:sessions");
  $sessions->setAlias("sessions");

  // 新規セッション率
  $sessionsPerUser = new Google_Service_AnalyticsReporting_Metric();
  $sessionsPerUser->setExpression("ga:sessionsPerUser");
  $sessionsPerUser->setAlias("sessionsPerUser");
  ・
  ・
   $request->setMetrics(array($sessions,$sessionsPerUser,$pageviews));

カラム単位でオブジェクトを作らないといけないところが若干めんどくさいですが
1度作ればコピペできます

Metric名がわからない場合は公式のページで検索できます(英語)
https://developers.google.com/analytics/devguides/reporting/core/dimsmets


f:id:masalib:20161031215642p:plain
英語ができない私はカラムがわからない場合は
Analyticsの表示を英語に変えて、同じものを出力させる事で
カラム名を探しました

英語の表記に変える場合は下記を参考にしました
Analyticsの画面で使用される言語を変更 - Google Analyticsの使い方

表示順の設定

  Analyticsはデフォルトでセッション数になっているっぽいですが
  APIで取得するとその指定がなくなります
  ページで表示するもので指定するみたい

  //表示する順番の制御(Metricで指定した値を使う)
  $ordering = new Google_Service_AnalyticsReporting_OrderBy();
  $ordering->setFieldName("ga:sessions");
  $ordering->setOrderType("VALUE");
  $ordering->setSortOrder("DESCENDING");
表示件数の設定

デフォルトは全件を取得するみたいです
自分みたいな弱小ブログなら問題ないのですが
大きなサイトなどは大変なので1000件に絞り込みました

  $request->setPageSize(1000);


今後について

masalib.hatenablog.com
で取得したページのパスをもとに
値をDBにいれたいと思います
それが終わったらDBがないバージョンを作りたいと思います