我正在使用 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() 我认为它们必须与此相关。
有人可以解释一下如何做到这一点吗?这个例子非常有用。谢谢。
最佳答案
客户端库
PHP client libraries从 reference docs 中找到的资源描述生成。任何Object()
将成为 PHP 客户端库中的一个类。例如 Object(Metric]
将变成 Google_Service_AnalyticsReporting_Metric
。能够查看资源描述并理解生成的类的结构非常重要,否则无法使用生成的源来指导您了解类的结构。
因此,在您的问题标题中,您会问:“如何设置维度别名?”如果您查看资源描述和生成的源,您只会注意到 Metric
类具有属性 alias
。这是因为Metric
对象采用 expression
字段,而不是 name
field 。事实上,您可以提供一个数学表达式,例如 ga:sessions * ga:users
但这样的字符串可能会令人困惑,因此您可能需要设置 alias
为此expression
.
API 限制和配额
您一次请求 10 行并希望对它们进行分页。我强烈鼓励您提出最大的要求,以最有效地利用您的 API quota 。 API 是共享资源,如果您使用效率低下,它不会带您走得那么远。话虽如此,我将在下面描述如何进行分页。
分页 PHP
假设您仔细阅读了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();
...
}
您从该报告中获得了一些不错的信息,一些维度和指标看起来您的新电子商务网站运行良好。事实上,自从您点击 pageSize 以来,您需要从此报告中获取更多数据。在您获得规划第三季度策略所需的所有行之前。没关系,你是一个聪明的程序员,你坚持了这一点 $request
那$nextPageToken
。你清楚地知道该做什么;您将使用 $nextPageToken
再次调用 API :
$request->setPageToken($nextPageToken);
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
$response = $analytics->reports->batchGet( $body );
因此,您刚刚翻阅了多个页面。冲洗并重复。
对于那些想要 JSON
的人等效于此:
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"
}
]
}
关于php - 如何使用 PHP 在 Google Analytics Core reporting API V4 上设置维度别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38639829/