Я пытался получить метрики для всех URL-адресов, которые содержат определенный идентификатор в них. Из этого вопроса: Добавление измерения ga: pagePath для получения просмотров страниц для определенного URL-адреса с помощью API отчетов Google Analytics v4 Я увидел подход к запросу и попробовал его вместо объектно-ориентированной версии. В подходе запроса код работает фантастически, за исключением того, что он будет возвращать только последнюю отправленную метрику (в этом примере он возвращает только уникальные просмотры страниц, поскольку он указан последним для метрик). Мне нужны значения для всех трех возвращаемых без необходимости попадания в API три раза. Вот мой код:
$query = [
"viewId" => $profileId,
"dateRanges" => [
"startDate" => "2018-01-25",
"endDate" => "2018-01-25"],
"metrics" => [
"expression" => "ga:pageviews",
"expression" => "ga:avgTimeOnPage",
"expression" => "ga:uniquePageviews"],
"dimensions" => [
"name" => "ga:pagepath"],
"dimensionFilterClauses" => [
'filters' => [
"dimension_name" => "ga:pagepath",
"operator" => "PARTIAL",
"expressions" => $theId
]
]
];
// build the request and response
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests(array($query));
$report = $analytics->reports->batchGet($body);
Есть мысли о том, как бы я сделал это правильно?
Попробуйте следующую функцию, просто замените ENTER_ID своим идентификатором. Похоже, что это получает трафик для всех страниц
function segmentRequest(&$analyticsreporting) {
// Create the DateRange object.
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("2018-02-01");
$dateRange->setEndDate("2018-02-15");
// Create the Metrics object.
$pageviews = new Google_Service_AnalyticsReporting_Metric();
$pageviews->setExpression("ga:pageviews");
$pageviews->setAlias("pageviews");
//Create the browser dimension.
$path = new Google_Service_AnalyticsReporting_Dimension();
$path->setName("ga:pagePath");
// Create the segment dimension.
$segmentDimensions = new Google_Service_AnalyticsReporting_Dimension();
$segmentDimensions->setName("ga:segment");
// Create Dimension Filter.
$dimensionFilter = new Google_Service_AnalyticsReporting_SegmentDimensionFilter();
$dimensionFilter->setDimensionName("ga:pagePath");
$dimensionFilter->setOperator("PARTIAL");
$dimensionFilter->setExpressions(array("ENTER_ID"));
// Create Segment Filter Clause.
$segmentFilterClause = new Google_Service_AnalyticsReporting_SegmentFilterClause();
$segmentFilterClause->setDimensionFilter($dimensionFilter);
// Create the Or Filters for Segment.
$orFiltersForSegment = new Google_Service_AnalyticsReporting_OrFiltersForSegment();
$orFiltersForSegment->setSegmentFilterClauses(array($segmentFilterClause));
// Create the Simple Segment.
$simpleSegment = new Google_Service_AnalyticsReporting_SimpleSegment();
$simpleSegment->setOrFiltersForSegment(array($orFiltersForSegment));
// Create the Segment Filters.
$segmentFilter = new Google_Service_AnalyticsReporting_SegmentFilter();
$segmentFilter->setSimpleSegment($simpleSegment);
// Create the Segment Definition.
$segmentDefinition = new Google_Service_AnalyticsReporting_SegmentDefinition();
$segmentDefinition->setSegmentFilters(array($segmentFilter));
// Create the Dynamic Segment.
$dynamicSegment = new Google_Service_AnalyticsReporting_DynamicSegment();
$dynamicSegment->setSessionSegment($segmentDefinition);
$dynamicSegment->setName("Visits to /en/listings.php");
// Create the Segments object.
$segment = new Google_Service_AnalyticsReporting_Segment();
$segment->setDynamicSegment($dynamicSegment);
// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId("XXXXX");
$request->setDateRanges(array($dateRange));
$request->setDimensions(array($path, $segmentDimensions));
$request->setSegments(array($segment));
$request->setMetrics(array($pageviews));
// Create the GetReportsRequest object.
$getReport = new Google_Service_AnalyticsReporting_GetReportsRequest();
$getReport->setReportRequests(array($request));
// Call the batchGet method.
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
$response = $analyticsreporting->reports->batchGet( $body );
printResults($response->getReports());
}
Для тех, кто хочет продолжать строить запросы с массивом, это должно работать:
$request = [
"viewId" => "123456789",
"dateRanges" => [
"startDate" => "2018-01-01",
"endDate" => "today"],
"metrics" => [
"expression" => "ga:pageviews"],
"dimensions" => [
["name" => "ga:browser"],
["name" => "ga:sessionDurationBucket"]
],
"dimensionFilterClauses" => [
'filters' => [
"dimension_name" => "ga:pagepath",
"operator" => "EXACT",
"expressions" => $url
]
]
];