我正致力于使用Google Analytics Core Reporting API V4将Google Analytics Reporting API v4集成到我的网站
我已设置报告api以返回最多10个结果。我的问题是,我无法找到下一个或前一个10个结果,因为它总是先返回10.
有没有办法通过Google Analytics Core Reporting API v4获得下一个和/或前10个结果?
我的PHP代码如下:
// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($VIEW_ID);
$request->setDateRanges($dateRange);
$request->setPageSize(10);
//===========================================================
// HOW DO I SET TO SHOW DIFFERENT PAGE THAN A FIRST PAGE
// HOW DO I SHOW RESULTS 20-30
//===========================================================
//$request->setPageToken($page_token);
$request->setDimensions($dimensions);
$request->setMetrics($metrics);
$request->setDimensionFilterClauses($dimensionFilterClause);
$request->setMetricFilterClauses(array($metricFilterClause));
$request->setOrderBys($ordering);
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
return $analytics->reports->batchGet( $body );
我发现有一个函数setPageToken()和函数getPageToken()我假设必须对它做一些事情。
有人可以解释如何做到这一点吗?这个例子非常有用。谢谢。
答案 0 :(得分:2)
PHP client libraries是根据reference docs中找到的资源说明生成的。任何Object()
都将成为PHP客户端库中的一个类。例如,Object(Metric]
将变为Google_Service_AnalyticsReporting_Metric
。重要的是能够查看资源描述并理解生成的类的结构,除此之外,使用生成的源来指导您如何构建类。
因此,在您的问题标题中,您会问:“如何设置维度别名?”如果您查看资源说明和生成的来源,您会发现只有Metric
类具有财产alias
。这是因为Metric
对象需要expression
字段,而不是name
字段。实际上,您可以提供ga:sessions * ga:users
等数学表达式,但这样的字符串可能会令人困惑,因此您可能希望为alias
设置expression
。
您一次请求10行并希望通过它们进行分页。我强烈建议您尽最大努力最有效地使用API quota。 API是一种共享资源,如果您使用它效率低下,它将不会带您到目前为止。话虽如此,我将在下面描述如何进行分页。
让我们假设您知道如何使用auth和所有内容成功完成请求,因为您仔细阅读了Hello Analytics PHP指南:
// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($VIEW_ID);
$request->setDateRanges($dateRange);
$request->setMetrics($metrics);
$request->setDimensions($dimensions);
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
$response = $analytics->reports->batchGet( $body );
太棒了,干得好。困难的部分在你身后。你是一个聪明的程序员,所以你要坚持$response
和$request
,因为你怀疑它们可能很重要。所以你继续解析响应:
for ( $reportIndex = 0; $reportIndex < count( $response ); $reportIndex++ ) {
$report = $response[ $reportIndex ];
$header = $report->getColumnHeader();
$dimensionHeaders = $header->getDimensions();
$metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
$rows = $report->getData()->getRows();
$nextPageToken = $report->getNextPageToken();
...
}
您从该报告中获得了一些不错的信息,一些维度和指标看起来像您的新电子商务网站表现良好。实际上,您需要从此报告中获取更多数据,因为在获得计划Q3策略所需的所有行之前,您已经点击了pageSize。没关系,你是一个聪明的程序员,你坚持$request
和$nextPageToken
。你确切地知道要做什么;您将使用$nextPageToken
:
$request->setPageToken($nextPageToken);
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
$response = $analytics->reports->batchGet( $body );
因此,您刚刚通过多个页面进行分页。冲洗并重复洗涤。
对于那些想要JSON
等效的人,你可以去:
原始请求:
{
"reportRequests":
[
{
"viewId": "XXXX",
"metrics":
[
{
"expression": "ga:users"
}
],
"dimensions":
[
{
"name": "ga:pagepath"
},
{
"name": "ga:browser"
},
{
"name": "ga:country"
}
]
}
]
}
响应:
{
"reports": [
{
"columnHeader": {
"dimensions": [
"ga:pagepath",
"ga:browser",
"ga:country"
],
"metricHeader": {
"metricHeaderEntries": [
{
"name": "ga:users",
"type": "INTEGER"
}
]
}
},
"data": {
"rows": [
...
],
"totals": [
{
"values": [
"3739"
]
}
],
"rowCount": 1109,
"minimums": [
{
"values": [
"1"
]
}
],
"maximums": [
{
"values": [
"359"
]
}
]
},
"nextPageToken": "1000"
}
]
}
第二次请求:
{
"reportRequests":
[
{
"viewId": "XXXX",
"metrics":
[
{
"expression": "ga:users"
}
],
"dimensions":
[
{
"name": "ga:pagepath"
},
{
"name": "ga:browser"
},
{
"name": "ga:country"
}
],
"pageToken": "1000"
}
]
}