Итак, у нас есть рабочий 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)