Php 如何在GA-api中构建多段序列

Php 如何在GA-api中构建多段序列,php,google-analytics,google-analytics-api,Php,Google Analytics,Google Analytics Api,我想从GA api获取段序列sessions::sequence::GA:eventCategory=@EXAMPLE\u EVENT\u CATEGORY的分析数据;ga:eventAction=@EXAMPLE\u EVENT\u ACTION;->>ga:eventCategory=@EXAMPLE\u EVENT\u CATEGORY2;ga:eventAction=@EXAMPLE\u EVENT\u ACTION2 没有关于从段序列中筛选数据的文档。我想我必须使用Google\u服务

我想从GA api获取段序列
sessions::sequence::GA:eventCategory=@EXAMPLE\u EVENT\u CATEGORY的分析数据;ga:eventAction=@EXAMPLE\u EVENT\u ACTION;->>ga:eventCategory=@EXAMPLE\u EVENT\u CATEGORY2;ga:eventAction=@EXAMPLE\u EVENT\u ACTION2

没有关于从段序列中筛选数据的文档。我想我必须使用
Google\u服务\u分析报告\u SequenceStep
或/和
Google\u服务\u分析报告\u SequenceSegment
对象。问题是我不知道在哪里(如何)使用它。我试着从这里跟踪文档


你好,我已经为同样的问题挣扎了几天,使用一个没有文档的api是一场噩梦。但我想我把它整理好了,它从分析界面给了我同样的结果

而不是将多个
段设置为
请求

$request->setSegments(数组($segmentFilter1、$segmentFilter2、$segmentFilter3、$segmentFilter4))

这样做

在此行中组合多个
段过滤器
s

$segmentDefinition->setSegmentFilters(数组($segmentFilter1,$segmentFilter2))

只给
请求一个

$request->setSegments(数组($segment))

使用当前的
buildSimpleSegment()
方法,这将不起作用,因此需要更改它并返回
segmentFilter
,然后将它们合并到
getReport()


希望能有所帮助

您好,我已经为同样的问题挣扎了几天,使用没有文档的api简直是噩梦。但我想我把它整理好了,它从分析界面给了我同样的结果

而不是将多个
段设置为
请求

$request->setSegments(数组($segmentFilter1、$segmentFilter2、$segmentFilter3、$segmentFilter4))

这样做

在此行中组合多个
段过滤器
s

$segmentDefinition->setSegmentFilters(数组($segmentFilter1,$segmentFilter2))

只给
请求一个

$request->setSegments(数组($segment))

使用当前的
buildSimpleSegment()
方法,这将不起作用,因此需要更改它并返回
segmentFilter
,然后将它们合并到
getReport()

希望能有帮助

protected function buildSimpleSegment($segmentName, $dimension, $dimensionFilterExpression) {
        // Create Dimension Filter.
        $dimensionFilter = new \Google_Service_AnalyticsReporting_SegmentDimensionFilter();
        $dimensionFilter->setDimensionName($dimension);
        $dimensionFilter->setOperator("EXACT");
        $dimensionFilter->setExpressions(array($dimensionFilterExpression));

        // 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($segmentName);

        // Create the Segments object.
        $segment = new \Google_Service_AnalyticsReporting_Segment();
        $segment->setDynamicSegment($dynamicSegment);

        return $segment;
    }

function getReport() {
        $stats = [
            'ga_profile_from_search_page' => [
                'metric' => 'ga:uniquePageviews',
                'dimension' => 'ga:pagePath',
                'filter' => 'ga:pagePath=PATH_FILTER’,
                'startOffset' => '30 days ago',
                'segment' => 'sessions::sequence::ga:eventCategory=@EXAMPLE_EVENT_CATEGORY;ga:eventAction=@EXAMPLE_EVENT_ACTION;->>ga:EXAMPLE_EVENT_CATEGORY2=@Profile;ga:eventAction=@EXAMPLE_EVENT_ACTION2’
            ],
        ];

        foreach ($stats as $key => $stat) {

            // Create the DateRange object.
            $dateRange = new \Google_Service_AnalyticsReporting_DateRange();
            $dateRange->setStartDate(date('Y-m-d', strtotime($stat['startOffset'])));
            $dateRange->setEndDate(date('Y-m-d', strtotime('now')));

            // Create the Metrics object.
            $metric = new \Google_Service_AnalyticsReporting_Metric();
            $metric->setExpression($stat['metric']);

            //Create the Dimensions object.
            $dimension = new \Google_Service_AnalyticsReporting_Dimension();
            $dimension->setName($stat['dimension']);

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

            // Specifying multiple segments
            $segmentFilter1 = $this->buildSimpleSegment("Search segment", "ga:eventCategory", "EXAMPLE_EVENT_CATEGORY");
            $segmentFilter2 = $this->buildSimpleSegment("Visit profile after search segment", "ga:eventAction", "EXAMPLE_EVENT_ACTION");
            $segmentFilter3 = $this->buildSimpleSegment("Profile page view segment", "ga:eventCategory", "EXAMPLE_EVENT_CATEGORY2");
            $segmentFilter4 = $this->buildSimpleSegment("Visit profile segment", "ga:eventAction", "EXAMPLE_EVENT_ACTION2”);


            // Create the ReportRequest object.
            $request = new \Google_Service_AnalyticsReporting_ReportRequest();
            $request->setViewId($VIEW_ID);
            $request->setDateRanges($dateRange);
            $request->setMetrics(array($metric));

            $request->setFiltersExpression($stat['filter']);
            $request->setSegments(array($segmentFilter1, $segmentFilter2, $segmentFilter3, $segmentFilter4));
            $request->setDimensions(array($dimension, $segmentDimensions));

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

            $response = $this->analytics->reports->batchGet($body);

            $this->printResults($key, $response);
        }
    }