#はじめに
はじめてのアナリティクス Reporting API v4: サービス アカウント向け PHP クイックスタートを参考にして、指定した期間のPV数とUU数を、日毎に取得するバッチを作成できたので、クイックスタートのHelloAnalytics.phpのgetReportメソッド にあたる部分の備忘録。
cronでバッチ実行して日毎のPV数、UU数を取得するバッチを実行したい人の役に立てたらと思います。
##前提
- PHP7.4
- Google API ConsoleでJSON形式の秘密鍵を作成済み
- クライアントライブラリインストール済み
- 例外系の処理も書いていますが省略。
###PHPプログラム
HelloAnalytics.php
<?php
function getReport($analytics) {
// Create the DateRange object.
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("7daysAgo");
$dateRange->setEndDate("today");
// Create the Metrics object.
// PV
$pageviews = new Google_Service_AnalyticsReporting_Metric();
$pageviews->setExpression('ga:pageviews');
// UU
$uniqueUsers = new Google_Service_AnalyticsReporting_Metric();
$uniqueUsers->setExpression('ga:users');
// Create the Dimension object.
// Daily
$byDay = new Google_Service_AnalyticsReporting_Dimension();
$byDay->setName("ga:date");
// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($viewId);
$request->setDateRanges($dateRange);
$request->setMetrics([$pageviews, $uniqueUsers]);
$request->setDimensions([$byDay]);
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests([$request]);
$result = $analytics->reports->batchGet($body);
//今回は日毎のPV数とUU数が欲しかったので、日付をキーとした連想配列にpvとuuを入れてみました。
$data = [];
foreach ($result['reports'][0]['data']['rows'] as $row) {
$data[$row['dimensions'][0]] = [
"pv" => $row['metrics'][0]['values'][0],
"uu" => $row['metrics'][0]['values'][1],
];
}
実際の中身の形式は以下のようになります。
var_dump($data);
//以下結果例
[20201013] =>
array(2) {
'pv' =>
string(5) "12345"
'uu' =>
string(4) "8585"
}...
###最後に
ソートの設定しなくても古い順から結果を得ることができるんですね。
クイックスタートの参考例ではPV数だけが返ってきており、かつ指定した合計数が返ってきてしまったのですが、
$uniqueUsers->setExpression('ga:users');
$byDay->setName("ga:date");
こちらの設定をすることで、PV数だけでなくUU数と、指定した期間の日毎の結果を得ることができたので嬉しかったです。