API Analytics и PHP - получение отчетов в разных форматах

Следующий код возвращает объект Google_Service_AnalyticsReporting_GetReportsResponse

$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests($aRequests);
return $this->oAnalytics->reports->batchGet($body);

Мне интересно, могу ли я получать отчеты в другом формате, например: Array(Dimension,value)

Ответы

Ответ 1

Да.

SDK для Google Reporting v4 для PHP выглядит так, как будто он был автоматически преобразован из Java-кода, а также со всеми обычными перезагрузками объектов.

Чтобы преобразовать в массив, предполагая, что вы задали один размер и некоторые показатели:

$data = []
foreach ($this->oAnalytics->reports->batchGet($body)->getReports()[0]->getData()->getRows() as $row) {
  $key = $row->dimensions[0]; // chose a unique value or dimension that works for your app, or remove and use $data[] = $value; below
  $values = array_merge($row->metrics, $row->dimensions);    
  $data[$key] = $value;
}

Ответ 2

$client = new \Google_Client();
$cred = new \Google_Auth_AssertionCredentials(
            $serviceAccountEmail,
            array(\Google_Service_Analytics::ANALYTICS_READONLY),
            $key
        );
$client->setAssertionCredentials($cred);

if ($client->getAuth()->isAccessTokenExpired()) {
            $client->getAuth()->refreshTokenWithAssertion($cred);
}
$analytics = new \Google_Service_Analytics($client);
$row = $analytics->data_ga->get(
                    'ga:' . $profileId,
                    $startdate,
                    $enddate,
                    $metrics,
                    array(
                        'dimensions'  => $dimension,
                        'sort'        => $metrics,
                        'max-results' => 20,
                    )
                );

Это выполнило мою работу.

$row дает что-то вроде следующего

array(5 items)
   0 => array(2 items)
      0 => 'India' (5 chars)
      1 => '1' (1 chars)
   1 => array(2 items)
      0 => 'Taiwan' (6 chars)
      1 => '1' (1 chars)
   2 => array(2 items)
      0 => 'United States' (13 chars)
      1 => '1' (1 chars)
   3 => array(2 items)
      0 => '(not set)' (9 chars)
      1 => '4' (1 chars)
   4 => array(2 items)
      0 => 'United Kingdom' (14 chars)
      1 => '82' (2 chars)