【发布时间】:2018-08-28 06:08:03
【问题描述】:
所以我们有一个可以在特定日期范围内获取报告的有效 API。最近,我们尝试获取包含多达 40,000 个结果的行的报告。我们收到了 API 的响应,并能够提取前 1000 行。
现在的问题是分页。该查询设置为每批次检索 1,000 行,因此总共有 40 个批次(基于 40,000 行)。根据analytics api pagination,从 api 响应中检索 nextPageToken 并将其设置为下一个批处理请求。大多数时候我们得到一个不完整的报告,因为从响应返回的 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)
【问题讨论】:
标签: php google-analytics google-analytics-api