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)