У меня есть массив с примерно 100 сообщениями, которые я хотел бы видеть в статистике Google Analytics для каждого сообщения.Теперь я сделал функцию, которая зацикливается на каждом посте и печатает результат для каждого - но это занимает слишком много времени, и мне интересно, смогу ли я сделать эту работу с помощью всего ОДНОГО запроса в dimensionFilterClauses и просто добавить новый фильтр из массива постов.
Я пробовал несколько, но у меня не получается, и он возвращает только одну статистику поста.
array('/post/hey-everyone', '/post/hello-world/', '/post/test-this/');
function getReports($page_path, $start_date){
global $VIEW_ID, $end_date, $analytics;
$query = [
"viewId" => $VIEW_ID,
"dateRanges" => [
"startDate" => $start_date,
"endDate" => $end_date
],
"metrics" => [
"expression" => "ga:pageviews"
],
"dimensions" => [
"name" => "ga:pagepath"
],
"dimensionFilterClauses" => [
'filters' => [
"dimension_name" => "ga:pagepath",
"operator" => "EXACT", // valid operators can be found here: https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet#FilterLogicalOperator
"expressions" => $page_path
]
]
];
// build the request and response
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests(array($query));
// now batchGet the results https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet
$report = $analytics->reports->batchGet($body);
$rows = $report[0]->getData()->getRows();
if ($rows){
$metrics = $rows[0]->getMetrics()[0]->values[0];
if ($metrics){
return $metrics;
}
}
return false;
}