API Google Analytics - неполный пакет отчетов - PullRequest
0 голосов
/ 28 августа 2018

Итак, у нас есть рабочий API, который выбирает отчеты в определенные диапазоны дат. Недавно мы попытались получить отчеты со строками, достигающими 40 000 результатов. Мы получили ответ от API и смогли извлечь первые 1000 строк.

Теперь проблема с нумерацией страниц. Запрос настроен на получение 1000 строк на пакет, таким образом, в общей сложности 40 пакетов (на основе 40000 строк). В соответствии с API-интерфейсом аналитики nextPageToken извлекается из ответа API и устанавливается на следующий пакетный запрос. В большинстве случаев мы получаем неполный отчет, потому что nextPageToken, возвращаемый из ответа, пуст. Таким образом, мы не можем продолжить получение следующей партии. Мы попытались вручную заполнить nextPageToken , потому что это индекс строки, начинающийся с нуля, но вызов API завершился неудачей.

Есть идеи, почему nextPageToken из ответа случайно не получается?

код итерации:

$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
$data =  $service->reports->batchGet( $body );

$cnt = 0; 
while ($data->reports[0]->nextPageToken > 0 && $cnt < 10) {
    \Log::info($data->reports[0]->nextPageToken); // Token log
    $body->reportRequests[0]->setPageToken($data->reports[0]->nextPageToken);
    $data =  $service->reports->batchGet( $body );
    showData($data->reports[0]->nextPageToken);
    $cnt++;
}

Log results:
Attempt 1
[2018-08-28 03:43:57] local.INFO: 1000  
[2018-08-28 03:43:59] local.INFO: 2000  
[2018-08-28 03:44:04] local.INFO: (failed/ empty next page token)
Attempt 2
[2018-08-28 03:45:01] local.INFO: 1000  
[2018-08-28 03:45:26] local.INFO: 2000  
[2018-08-28 03:45:42] local.INFO: (failed/ empty next page token) 
Attempt 3
[2018-08-28 03:48:47] local.INFO: 1000  
[2018-08-28 03:49:01] local.INFO: 2000  
[2018-08-28 03:49:15] local.INFO: 3000  
[2018-08-28 03:49:31] local.INFO: 4000  
[2018-08-28 03:49:46] local.INFO: 5000  
[2018-08-28 03:50:02] local.INFO: (failed/ empty next page token)  
Attempt 4
[2018-08-28 03:54:10] local.INFO: 1000  
[2018-08-28 03:54:12] local.INFO: 2000  
[2018-08-28 03:54:13] local.INFO: 3000  
[2018-08-28 03:54:14] local.INFO: 4000  
[2018-08-28 03:54:15] local.INFO: 5000  
[2018-08-28 03:54:16] local.INFO: 6000  
[2018-08-28 03:54:31] local.INFO: (failed/ empty next page token)

1 Ответ

0 голосов
/ 28 августа 2018

Вам необходимо установить каждый маркер страницы как nextPageToken

do {
   //your processing code
    $request->setPageToken($response[0]->getNextPageToken());//set next page token
} while ($response[0]->getNextPageToken() != '');
...