如何在Google Analytics Reporting API v4上设置分段过滤器


How to set a segment filter on Google Analytics Reporting API v4

我试图在从Google Analytics核心报告API返回数据时添加段过滤器,并具有以下代码:

<?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(段Id部分)。我有段ID的设置,所以,我需要做些什么来发送ga:段尺寸的请求?

我正在使用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));

必须创建一个段维度:

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

并添加到您的请求中:

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