Google Analytics - setPageSize не изменяется - PullRequest
0 голосов
/ 14 апреля 2020

Я попытался выполнить запрос к отчетам 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++;
    }
}

1 Ответ

0 голосов
/ 14 апреля 2020

В этом не было необходимости

$pivots = new Google_Service_AnalyticsReporting_Pivot();
$pivots->setDimensions([$dimension1]);
$pivots->setMetrics($quantityCheckedOut);

Вместо этого я написал

 $request->setDimensions($dimension1);

Тогда ответ Google состоял из двух столбцов в данных: ProductSKU и itemQuantity. Это я и хотел. Каким-то образом Pivot удаляет nextPageToken, а nextPageSize не влияет на запрос.

...