I am accessing the Google analytics API with PHP which works on my end but I\'d love to filter the results a bit further. Right now I am using:
$OBJresult =
You need to use the filters string to say "if path includes /news" which can be done as follows:
$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'));
The answer supplied by Barmar will only find an exact match for the /news page.
Use the filters
option.
$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'
)
);
See here for the list of page tracking dimensions you can filter on.
Reporting V4 example that may be useful. Thank god for these queries, their objects and poor documentation can cause severe ass cancer..
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());
}