如何使用php从google analytics api获取下一个10000个数据?
你好 有没有办法从google analytics API获取下一个10000个数据? 我想在得到第一个10000个数据之后再得到下一组数据。有没有办法做到这一点?我正在使用google analytics api php客户端库 这是我的密码:如何使用php从google analytics api获取下一个10000个数据?,php,google-analytics,google-api,google-analytics-api,google-api-php-client,Php,Google Analytics,Google Api,Google Analytics Api,Google Api Php Client,你好 有没有办法从google analytics API获取下一个10000个数据? 我想在得到第一个10000个数据之后再得到下一组数据。有没有办法做到这一点?我正在使用google analytics api php客户端库 这是我的密码: <?php $analytics = initializeAnalytics(); $response = getReport($analytics); printResults($response); function
<?php
$analytics = initializeAnalytics();
$response = getReport($analytics);
printResults($response);
function initializeAnalytics()
{
$KEY_FILE_LOCATION = __DIR__ . 'MyFileDirectory';
// Create and configure a new client object.
$client = new Google_Client();
$client->setApplicationName("Hello Analytics Reporting");
$client->setAuthConfig($KEY_FILE_LOCATION);
$client-
>setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
$analytics = new Google_Service_AnalyticsReporting($client);
return $analytics;
}
function getReport($analytics) {
// Replace with your view ID, for example XXXX.
$VIEW_ID = "MyViewId";
// Create the DateRange object.
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("2017-04-01");
$dateRange->setEndDate("2017-06-19");
// Create the Metrics object.
$totalEvents = new Google_Service_AnalyticsReporting_Metric();
$totalEvents->setExpression("ga:totalEvents");
$totalEvents->setAlias("totalEvents");
//Create the Dimensions object.
$clientId = new Google_Service_AnalyticsReporting_Dimension();
$clientId->setName("ga:dimension4");
$sessionId = new Google_Service_AnalyticsReporting_Dimension();
$sessionId->setName("ga:dimension5");
$eventLabel = new Google_Service_AnalyticsReporting_Dimension();
$eventLabel->setName("ga:eventLabel");
$timestamp = new Google_Service_AnalyticsReporting_Dimension();
$timestamp->setName("ga:dimension3");
// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($VIEW_ID);
//set number of rows
$request->setPageSize(10000);
$request->setDateRanges($dateRange);
$request->setMetrics(array($totalEvents));
$request->setDimensions(array($clientId,$sessionId,$eventLabel,
$timestamp));
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
return $analytics->reports->batchGet( $body );
}
}
?>
这将获得前10页的数据。我把它限制在10个,以防止它吃掉我的配额。如果你删除它,它将继续抓走所有的行,吃掉你的配额 注意:只有当您有一份报告时,这才有效。如果您有多个报表,那么您将不得不做一些花哨的工作,将正确的pageToken应用于每个报表,并删除已完成的报表。此时,除了返回的报告在报告数组中的位置之外,没有报告Id或方法来匹配发送到报告的内容
$service = new Google_Service_AnalyticsReporting($client);
// Create the DateRange object.
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("2016-01-01");
$dateRange->setEndDate("2017-06-30");
// Create the Metrics object.
$sessions = new Google_Service_AnalyticsReporting_Metric();
$sessions->setExpression("ga:sessions");
$sessions->setAlias("sessions");
//Create the Dimensions object.
$date = new Google_Service_AnalyticsReporting_Dimension();
$date->setName("ga:date");
$pagePath = new Google_Service_AnalyticsReporting_Dimension();
$pagePath->setName("ga:pagePath");
// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId("81692014");
$request->setPageSize("10000");
$request->setDateRanges($dateRange);
$request->setDimensions(array($date,$pagePath));
$request->setMetrics(array($sessions));
$request->setMetrics(array($sessions));
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
$data = $service->reports->batchGet( $body );
// Remove count if you really want everything.
$cnt = 0;
while ($data->reports[0]->nextPageToken > 0 && $cnt < 10) {
// There are more rows for this report.
$body->reportRequests[0]->setPageToken($data->reports[0]->nextPageToken);
$data = $service->reports->batchGet( $body );
$cnt++;
}
$service=新谷歌服务分析报告($client);
//创建DateRange对象。
$dateRange=新的Google_服务_分析报告_dateRange();
$dateRange->setStartDate(“2016-01-01”);
$dateRange->setEndDate(“2017-06-30”);
//创建度量对象。
$sessions=新Google_服务_分析报告_度量();
$sessions->setExpression(“ga:sessions”);
$sessions->setAlias(“sessions”);
//创建标注对象。
$date=新的Google_服务_分析报告_维度();
$date->setName(“ga:date”);
$pagePath=新Google_服务_分析报告_维度();
$pagePath->setName(“ga:pagePath”);
//创建ReportRequest对象。
$request=new Google_Service_analytics reporting_ReportRequest();
$request->setViewId(“81692014”);
$request->setPageSize(“10000”);
$request->setDateRanges($dateRange);
$request->setDimensions(数组($date,$pagePath));
$request->setMetrics(数组($sessions));
$request->setMetrics(数组($sessions));
$body=新的Google_服务_分析报告_GetReportsRequest();
$body->setReportRequests(数组($request));
$data=$service->reports->batchGet($body);
//如果您真的想要所有东西,请删除count。
$cnt=0;
而($data->reports[0]->nextPageToken>0&&$cnt<10){
//此报告有更多行。
$body->reportRequests[0]->setPageToken($data->reports[0]->nextPageToken);
$data=$service->reports->batchGet($body);
$cnt++;
}
我在上面贴了一个教程,我使用的完整代码可以在注释中找到。这段代码是从我的示例项目中提取的。你检查过了吗?@JordiNebot谢谢你的建议。我会试着把这个写在我的代码里。我希望这就是答案。@JordiNebot我试过了,错误是“在null上调用成员函数getNextPageToken()”@ben您必须对响应进行var转储,找出nextpagetoken的位置并使用它。AnalyticsV4与其他API不同,标准分页方法无法工作。我不得不自己为C#@DaImTo重新编写它。你以前用过PHP吗?让我试试你的建议。你在C#?@DalmTo上成功试用过吗?谢谢你的教程。这真是一个很大的帮助。现在可以了。我得到了正确的数据并将这些数据插入了我的数据库。请记住接受答案。当您接受stack overflow的欢迎时,您也将获得积分