Как установить фильтр сегментов в Google Analytics Reporting API v4

Я пытаюсь добавить фильтр сегментов при возврате данных из API Google Analytics Core Reporting и получаю следующий код:

<?php

function getReport($analytics)
{
$VIEW_ID = "XXX";

// Create the DateRange object.
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("30daysAgo");
$dateRange->setEndDate("yesterday");

// Create the Metrics object.
$sessions = new Google_Service_AnalyticsReporting_Metric();
$sessions->setExpression("ga:sessions");
$sessions->setAlias("sessions");

$goalCompletionAll = new Google_Service_AnalyticsReporting_Metric();
$goalCompletionAll->setExpression("ga:goalCompletionsAll");
$goalCompletionAll->setAlias("goalCompletionsAll");

// Create first dimension object
$dimensionChannel = new Google_Service_AnalyticsReporting_Dimension();
$dimensionChannel->setName('ga:channelGrouping');

// Create second dimension object
$dimensionSource = new Google_Service_AnalyticsReporting_Dimension();
$dimensionSource->setName('ga:source');

// Create Segment object
$segments = new Google_Service_AnalyticsReporting_Segment();
$segments->setSegmentId('gaid::-4');

// Create the ordering object
$ordering = new Google_Service_AnalyticsReporting_OrderBy();
$ordering->setFieldName("ga:sessions");
$ordering->setOrderType("VALUE");
$ordering->setSortOrder("DESCENDING");

// Create the Report Request object
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($VIEW_ID);
$request->setDateRanges($dateRange);

// Set the metric
$request->setMetrics([
$sessions,
$goalCompletionAll,
]);

// Set the dimension
$request->setDimensions([
$dimensionChannel,
$dimensionSource
]);// Set the segments
$request->setSegments($segments);

// Set ordering
$request->setOrderBys($ordering);

$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests(array($request));

return $analytics->reports->batchGet($body);
}

Но когда я запускаю этот код, я получаю следующую ошибку:

Requests with segments must have ga:segment dimension.

Я последовал примеру, который нашел этот ответ в Java (часть идентификатора сегмента). У меня есть настройка идентификатора сегмента, так что мне нужно сделать, чтобы отправить запрос на измерение ga: segement?

0

Решение

Вы должны создать измерение сегмента:

        $dimensionSegment= new Google_Service_AnalyticsReporting_Dimension();
$dimensionSegment->setName("ga:segment");

И добавьте его в свой запрос:

$request->setDimensions([
$dimensionChannel,
$dimensionSource,
$dimensionSegment
]);
2

Другие решения

Я использую PHP. Мой ответ почти такой же, как приведенный выше, но синтаксис segmentDimensions работал вместо dimensionSegment,

Вот что сработало для меня:

// Create the segment dimension.
$segmentDimensions = new Google_Service_AnalyticsReporting_Dimension();
$segmentDimensions->setName("ga:segment");

//create the Segment object.
$segments = new Google_Service_AnalyticsReporting_Segment();
$segments->setSegmentId("gaid::abcDE4fgHIJOOkLm1-nO1p");

Затем в объекте Report Request:

$request->setDimensions(array($dimensions, $segmentDimensions));
$request->setSegments(array($segments));
2

По вопросам рекламы [email protected]