Php Google analytics api-不完整的报告批处理

Php Google analytics api-不完整的报告批处理,php,google-analytics,google-analytics-api,Php,Google Analytics,Google Analytics Api,因此,我们有一个可以在特定日期范围内获取报告的api。最近,我们尝试获取行数达到40000个结果的报告。我们得到了API的响应,能够提取前1000行 现在的问题是分页。查询设置为每批检索1000行,因此总共有40批(基于40000行)。根据,从api响应中检索nextPageToken,并将其设置为下一批请求。大多数情况下,我们都会收到不完整的报告,因为从响应返回的nextPageToken是空的。因此,我们无法继续提取下一批。我们尝试手动填充,因为它是基于零的行索引,但api调用失败 知道为什

因此,我们有一个可以在特定日期范围内获取报告的api。最近,我们尝试获取行数达到40000个结果的报告。我们得到了API的响应,能够提取前1000行

现在的问题是分页。查询设置为每批检索1000行,因此总共有40批(基于40000行)。根据,从api响应中检索nextPageToken,并将其设置为下一批请求。大多数情况下,我们都会收到不完整的报告,因为从响应返回的nextPageToken是空的。因此,我们无法继续提取下一批。我们尝试手动填充,因为它是基于零的行索引,但api调用失败

知道为什么响应中的下一个getoken随机失败吗

迭代代码:

$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)
$body=new Google_Service_Analytics Reporting_GetReportsRequest();
$body->setReportRequests(数组($request));
$data=$service->reports->batchGet($body);
$cnt=0;
而($data->reports[0]->nextPageToken>0&&$cnt<10){
\日志::信息($data->reports[0]->nextPageToken);//令牌日志
$body->reportRequests[0]->setPageToken($data->reports[0]->nextPageToken);
$data=$service->reports->batchGet($body);
showData($data->reports[0]->nextPageToken);
$cnt++;
}
日志结果:
尝试1
[2018-08-28 03:43:57]local.INFO:1000
[2018-08-2803:43:59]local.INFO:2000
[2018-08-28 03:44:04]local.INFO:(下一页令牌失败/为空)
尝试2
[2018-08-28 03:45:01]local.INFO:1000
[2018-08-2803:45:26]local.INFO:2000
[2018-08-28 03:45:42]local.INFO:(下一页令牌失败/为空)
尝试3
[2018-08-28 03:48:47]local.INFO:1000
[2018-08-2803: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]本地信息:5000
[2018-08-28 03:50:02]local.INFO:(下一页令牌失败/为空)
尝试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:(下一页令牌失败/为空)

您应该需要设置每个页面标记,如
nextPageToken

do {
   //your processing code
    $request->setPageToken($response[0]->getNextPageToken());//set next page token
} while ($response[0]->getNextPageToken() != '');
我正在设置它(参见帖子上的示例代码)。问题在于$response[0]->getNextPageToken()返回空。我还尝试手动设置它是否返回空,因为nextPageToken只是一个表示下一批的索引的整数,这种方法也失败了。因此,我认为谷歌方面可能存在一个问题。