LoginSignup
3

More than 3 years have passed since last update.

Google Analytics Reporting API v4を使ってPV数とUU数を取得する

Posted at

はじめに

はじめてのアナリティクス 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数と、指定した期間の日毎の結果を得ることができたので嬉しかったです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3