我正在使用PHP访问谷歌分析API,该API在我的终端上工作,但我想进一步过滤结果。现在我用的是:
$OBJresult = $analytics -> data_ga -> get(
'ga:' . $profilID,
'2012-01-01',
date( "Y-m-d" ),
'ga:visits',
array(
'dimensions' => 'ga:pagePath',
'metrics' => 'ga:pageviews',
'sort' => '-ga:pageviews',
'max-results' => '25'
)
);
目前返回的是一组25页,按点击率排序。我希望将结果限制在服务器内的特定路径上。例如,只查询domain.com/news,只查看点击率最高的新闻页面。我可以使用PHP进行过滤,但更希望查询尽可能具体。
Thanks for the help
使用filters
选项
$OBJresult = $analytics->data_ga->get(
'ga:' . $profilID,
'2012-01-01',
date("Y-m-d"),
'ga:visits',
array(
'filters' => 'ga:pagePath==/news',
'dimensions' => 'ga:pagePath',
'metrics' => 'ga:pageviews',
'sort' => '-ga:pageviews',
'max-results' => '25'
)
);
查看可以过滤的页面跟踪维度列表
您需要使用过滤器字符串来表示"如果路径包含/news",可以这样做:
$OBJresult=$analytics->data_ga->get(
'ga:'.$profilID,
'2012-01-01',
date("Y-m-d"),
'ga:visits',
array(
'filters' => 'ga:pagePath=@/news',
'dimensions' => 'ga:pagePath',
'metrics' => 'ga:pageviews',
'sort' => '-ga:pageviews',
'max-results' => '25'));
Barmar提供的答案只会找到/news页面的精确匹配。
报告V4的例子,可能是有用的。感谢上帝的这些查询,他们的对象和糟糕的文档会导致严重的屁股癌。
function segmentRequest(&$analyticsreporting) {
$query = [
"viewId" => "XXXXXXX",
"dateRanges" => [
"startDate" => "2018-02-01",
"endDate" => "2018-02-15"
],
"metrics" => [
"expression" => "ga:pageviews"
],
"dimensions" => [
"name" => "ga:pagepath"
],
"dimensionFilterClauses" => [
'filters' => [
"dimension_name" => "ga:pagepath",
"operator" => "EXACT",
"expressions" => "/en/some_cool_page.php"
]
]
];
// Call the batchGet method.
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $query) );
$response = $analyticsreporting->reports->batchGet( $body );
printResults($response->getReports());
}