Я попытался выполнить запрос к отчетам Google Analytics, используя "google / apiclient" и основываясь на примере документации Google Analytics Reporting v4. Он возвращает записи, но всегда только 10. NextPageToken является нулевым в ответе. Ответ имеет только один отчет. Запрос установил PageSize для 100 записей. Я перепробовал множество конфигураций PageSize: 100/500/1000 и PageToken: 1/100/1000 / ab c и всегда возвращал только 10 записей. Я создал такой же отчет на странице, и он имеет 1169 страниц для 10 записей на странице (для того же диапазона дат). Я посмотрел на предельные квоты для API, и у него есть значение по умолчанию.
Я что-то пропустил в коде или может быть что-то не так с учетной записью службы конфигурации (некоторые ограничения для учетной записи службы)?
private function getReport($analytics, $VIEW_ID) {
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("2020-04-01");
$dateRange->setEndDate("2020-04-12");
$quantityCheckedOut = new Google_Service_AnalyticsReporting_Metric();
$quantityCheckedOut->setExpression("ga:quantityCheckedOut");
$quantityCheckedOut->setAlias("itemQuantity");
$dimension1 = new Google_Service_AnalyticsReporting_Dimension();
$dimension1->setName("ga:productSku");
$pivots = new Google_Service_AnalyticsReporting_Pivot();
$pivots->setDimensions([$dimension1]);
$pivots->setMetrics($quantityCheckedOut);
$order = new Google_Service_AnalyticsReporting_OrderBy();
$order->setFieldName("ga:quantityCheckedOut");
$order->setSortOrder("ASCENDING");
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($VIEW_ID);
$request->setDateRanges($dateRange);
$request->setPageSize("100");
$request->setHideValueRanges(true);
$request->setMetrics([$quantityCheckedOut]);
$request->setPivots($pivots);
$request->setOrderBys([$order]);
$request->setSamplingLevel("LARGE");
return $request;
}
private function initializeAnalytics()
{
$KEY_FILE_LOCATION = $this->initFolder . '/google.json';
$filesystemAdapter = new Local($this->cacheFolder);
$filesystem = new Filesystem($filesystemAdapter);
$client = new Google_Client();
$client->setApplicationName("App Name");
$client->setAuthConfig($KEY_FILE_LOCATION);
$client->setIncludeGrantedScopes(true);
$cache = new FilesystemCachePool($filesystem);
$client->setCache($cache);
$client->addScope(Google_Service_AnalyticsReporting::ANALYTICS_READONLY);
$analytics = new Google_Service_AnalyticsReporting($client);
return $analytics;
}
private function printResults($reports)
{
$nextToken = 0;
/** @var Google_Service_AnalyticsReporting_Report $report */
foreach ($reports->getReports() as $report) {
$nextToken = $report->getNextPageToken();
}
return $nextToken
}
public function run(){
/** @var Google_Service_AnalyticsReporting $analytics */
$analytics = $this->initializeAnalytics();
$pageToken = 1;
$i = 0;
$request = $this->getReport($analytics, "VIEW_IDxxxx");
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
while($i < 1) {
$request->setPageToken((string)$i);
$body->setReportRequests($request);
$response = $analytics->reports->batchGet($body);
$pageToken = $this->printResults($response);
$i++;
}
}