| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771 | <?phpnamespace app\lib;class GA{    const SUPERNOVA_KEY_PATH= BASE_DIR . 'config/supernova.json';    const ALIPEARL_KEY_PATH= BASE_DIR . 'config/alipearl.json';    const WIGGINS_KEY_PATH= BASE_DIR . 'config/wiggins.json';    const YOLISSA_KEY_PATH= BASE_DIR . 'config/yolissa.json';    const ASTERIA_KEY_PATH= BASE_DIR . 'config/asteria.json';    const WESTKISS_KEY_PATH= BASE_DIR . 'config/westkiss.json';    private static $insances=[];    private static function initializeAnalytics($dp){        $KEY_FILE_LOCATION = self::getPath($dp);        if(!$KEY_FILE_LOCATION){            throw new  \Exception("store 配置不存在");        }        $client = new \Google_Client();        $client->setApplicationName("Hello Analytics Reporting");        $client->setAuthConfig($KEY_FILE_LOCATION);        $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);        $analytics = new \Google_Service_AnalyticsReporting($client);        return $analytics;    }    public static function getInstance($dp){        if(isset(self::$insances[$dp])){            return self::$insances[$dp];        }else{            self::$insances[$dp]=self::initializeAnalytics($dp);            return self::$insances[$dp];        }    }    private function getViewId($dp){        $VIEW_ID="";        switch($dp){            case "1"://supernovahair                $VIEW_ID="155703065";            break;            case "2"://asteriahair                $VIEW_ID="162723112";            break;            case "3"://alipearlhair                $VIEW_ID="148377136";            break;            case "4"://alipearlhair                $VIEW_ID="152302477";            break;            case "5"://yolissahair                $VIEW_ID="157127813";            break;            case "6"://wiggins                $VIEW_ID="154631720";            break;        }        return $VIEW_ID;    }    public static function getPath($dp){        $path="";        switch($dp){            case "1"://supernovahair                $path=self::SUPERNOVA_KEY_PATH;            break;            case "2"://asteriahair                $path=self::ASTERIA_KEY_PATH;            break;            case "3"://alipearlhair                $path=self::ALIPEARL_KEY_PATH;            break;            case "4"://westkiss                $path=self::WESTKISS_KEY_PATH;            break;            case "5"://yolissahair                $path=self::YOLISSA_KEY_PATH;            break;            case "6"://alipearlhair                $path=self::WIGGINS_KEY_PATH;            break;        }        return $path;                    }    public function contentpages($dp,$start_at,$end_at){        $analytics=self::getInstance($dp);        $metricArr=[            'pageviews'=>"ga:pageviews",            'uniquePageviews'=>"ga:uniquePageviews",            'avgTimeOnPage'=>"ga:avgTimeOnPage",            'entrances'=>"ga:entrances",            'bounceRate'=>"ga:bounceRate",            'exitRate'=>"ga:exitRate",            'pageValue'=>"ga:pageValue",        ];        $dimensionArr=[            'pagePath'=>'ga:pagePath',            'date'=>"ga:date",        ];        $VIEW_ID = $this->getViewId($dp);//        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();        $dateRange->setStartDate($start_at);        $dateRange->setEndDate($end_at);        $metrics=[];        $dimensions=[];        foreach($metricArr as $k=>$v){            $Metric = new \Google_Service_AnalyticsReporting_Metric();            $Metric->setExpression($v);            $Metric->setAlias($k);            array_push($metrics,$Metric);        }        foreach($dimensionArr as $k=>$v){            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();            $Dimension->setName($v);            array_push($dimensions,$Dimension);                    }        $pageviewsFilter = new \Google_Service_AnalyticsReporting_MetricFilter();        $pageviewsFilter->setMetricName("ga:pageviews");        $pageviewsFilter->setOperator("GREATER_THAN");        $pageviewsFilter->setComparisonValue("1");        $MetricFilterClause=new \Google_Service_AnalyticsReporting_MetricFilterClause();        $MetricFilterClause->setFilters(array($pageviewsFilter));        $segmentDimensions = new \Google_Service_AnalyticsReporting_Dimension();        $segmentDimensions->setName("ga:segment");        array_push($dimensions,$segmentDimensions);                // Create Dimension Filter.        $dimensionFilter = new \Google_Service_AnalyticsReporting_SegmentDimensionFilter();        $dimensionFilter->setDimensionName("ga:pagePath");        $dimensionFilter->setOperator("REGEXP");        $dimensionFilter->setExpressions(array("(fbclid|catalogsearch)"));          // 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);        $segmentFilter->setNot(True);        // Create the Segment Definition.        $segmentDefinition = new \Google_Service_AnalyticsReporting_SegmentDefinition();        $segmentDefinition->setSegmentFilters(array($segmentFilter));        $dynamicSegment = new \Google_Service_AnalyticsReporting_DynamicSegment();        $dynamicSegment->setSessionSegment($segmentDefinition);        $dynamicSegment->setName('pagePath');        $segment = new \Google_Service_AnalyticsReporting_Segment();        $segment->setDynamicSegment($dynamicSegment);        $orderBy=new \Google_Service_AnalyticsReporting_OrderBy();        $orderBy->setFieldName('ga:pageviews');        $orderBy->setSortOrder("DESCENDING");        $request = new \Google_Service_AnalyticsReporting_ReportRequest();        $request->setViewId($VIEW_ID);        $request->setDateRanges($dateRange);        $request->setMetrics($metrics);        $request->setDimensions($dimensions);        $request->setSegments(array($segment));        $request->setOrderBys($orderBy);        $request->setPageSize(5000);        $request->setMetricFilterClauses($MetricFilterClause);            $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();        $body->setReportRequests( array( $request) );        $reports= $analytics->reports->batchGet( $body );        $result=$this->getResults($reports);         return $result;           }    public function trafficsource($dp,$start_at,$end_at){        $analytics=self::getInstance($dp);        $metricArr=[            'users'=>"ga:users",            'newUsers'=>"ga:newUsers",            'sessions'=>"ga:sessions",            'bounceRate'=>"ga:bounceRate",            'pageviewsPerSession'=>"ga:pageviewsPerSession",            'avgSessionDuration'=>"ga:avgSessionDuration",            'transactionsPerVisit'=>"ga:transactionsPerVisit",            'transactions'=>"ga:transactions",            'transactionRevenue'=>"ga:transactionRevenue",        ];        $dimensionArr=[            'pagePath'=>'ga:source',            'date'=>"ga:date",            'channelGrouping'=>"ga:channelGrouping",            'landingPagePath'=>"ga:landingPagePath",            'keyword'=>"ga:keyword",            'socialNetwork'=>"ga:socialNetwork",        ];        $VIEW_ID = $this->getViewId($dp);//        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();        $dateRange->setStartDate($start_at);        $dateRange->setEndDate($end_at);        $metrics=[];        $dimensions=[];        foreach($metricArr as $k=>$v){            $Metric = new \Google_Service_AnalyticsReporting_Metric();            $Metric->setExpression($v);            $Metric->setAlias($k);            array_push($metrics,$Metric);        }        foreach($dimensionArr as $k=>$v){            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();            $Dimension->setName($v);            array_push($dimensions,$Dimension);        }        $segmentDimensions = new \Google_Service_AnalyticsReporting_Dimension();        $segmentDimensions->setName("ga:segment");        array_push($dimensions,$segmentDimensions);                // Create Dimension Filter.        $dimensionFilter = new \Google_Service_AnalyticsReporting_SegmentDimensionFilter();        $dimensionFilter->setDimensionName("ga:source");        $dimensionFilter->setOperator("REGEXP");        $dimensionFilter->setExpressions(array("(fbclid|catalogsearch)"));          // 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);        $segmentFilter->setNot(True);        // Create the Segment Definition.        $segmentDefinition = new \Google_Service_AnalyticsReporting_SegmentDefinition();        $segmentDefinition->setSegmentFilters(array($segmentFilter));        $dynamicSegment = new \Google_Service_AnalyticsReporting_DynamicSegment();        $dynamicSegment->setSessionSegment($segmentDefinition);        $dynamicSegment->setName('trafficsources filter');        $segment = new \Google_Service_AnalyticsReporting_Segment();        $segment->setDynamicSegment($dynamicSegment);        $request = new \Google_Service_AnalyticsReporting_ReportRequest();        $request->setViewId($VIEW_ID);        $request->setDateRanges($dateRange);        $request->setMetrics($metrics);        $request->setDimensions($dimensions);        $request->setSegments(array($segment));        $request->setPageSize(5000);        // $request->setOrderBys($orderBy);        // $request->setMetricFilterClauses($MetricFilterClause);            $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();        $body->setReportRequests( array( $request) );        $reports= $analytics->reports->batchGet( $body );        $result=$this->getResults($reports);         return $result;    }    public function visitors_geo($dp,$start_at,$end_at){        $analytics=self::getInstance($dp);        $dimensionArr=[            'country'=>'ga:country',            'region'=>"ga:region",        ];        $metricArr=[            'transactions'=>"ga:transactions",            'transactionRevenue'=>"ga:transactionRevenue",        ];               $VIEW_ID = $this->getViewId($dp);//        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();        $dateRange->setStartDate($start_at);        $dateRange->setEndDate($end_at);        $metrics=[];        $dimensions=[];        foreach($metricArr as $k=>$v){            $Metric = new \Google_Service_AnalyticsReporting_Metric();            $Metric->setExpression($v);            $Metric->setAlias($k);            array_push($metrics,$Metric);        }        foreach($dimensionArr as $k=>$v){            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();            $Dimension->setName($v);            array_push($dimensions,$Dimension);        }        $orderBy=new \Google_Service_AnalyticsReporting_OrderBy();        $orderBy->setFieldName('ga:transactions');        $orderBy->setSortOrder("DESCENDING");        $request = new \Google_Service_AnalyticsReporting_ReportRequest();        $request->setViewId($VIEW_ID);        $request->setDateRanges($dateRange);        $request->setMetrics($metrics);        $request->setDimensions($dimensions);        $request->setOrderBys($orderBy);        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();        $body->setReportRequests( array( $request) );        $reports= $analytics->reports->batchGet( $body );        $result=$this->getResults($reports);         return $result;    }    public function product($dp,$start_at,$end_at){        $analytics=self::getInstance($dp);        $dimensionArr=[            'productName'=>'ga:productName',        ];        $metricArr=[            'itemRevenue'=>"ga:itemRevenue",            'uniquePurchases'=>"ga:uniquePurchases",            'itemQuantity'=>"ga:itemQuantity",        ];               $VIEW_ID = $this->getViewId($dp);//        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();        $dateRange->setStartDate($start_at);        $dateRange->setEndDate($end_at);        $metrics=[];        $dimensions=[];        foreach($metricArr as $k=>$v){            $Metric = new \Google_Service_AnalyticsReporting_Metric();            $Metric->setExpression($v);            $Metric->setAlias($k);            array_push($metrics,$Metric);        }        foreach($dimensionArr as $k=>$v){            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();            $Dimension->setName($v);            array_push($dimensions,$Dimension);        }        $orderBy=new \Google_Service_AnalyticsReporting_OrderBy();        $orderBy->setFieldName('ga:itemQuantity');        $orderBy->setSortOrder("DESCENDING");        $request = new \Google_Service_AnalyticsReporting_ReportRequest();        $request->setViewId($VIEW_ID);        $request->setDateRanges($dateRange);        $request->setMetrics($metrics);        $request->setDimensions($dimensions);        $request->setOrderBys($orderBy);        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();        $body->setReportRequests( array( $request) );        $reports= $analytics->reports->batchGet( $body );        $result=$this->getResults($reports);         return $result;    }    public function visitors_type($dp,$start_at,$end_at){        $analytics=self::getInstance($dp);        $dimensionArr=[            'userType'=>'ga:userType',            'date'=>'ga:date',        ];        $metricArr=[            'users'=>"ga:users",            'newUsers'=>"ga:newUsers",        ];               $VIEW_ID = $this->getViewId($dp);//        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();        $dateRange->setStartDate($start_at);        $dateRange->setEndDate($end_at);        $metrics=[];        $dimensions=[];        foreach($metricArr as $k=>$v){            $Metric = new \Google_Service_AnalyticsReporting_Metric();            $Metric->setExpression($v);            $Metric->setAlias($k);            array_push($metrics,$Metric);        }        foreach($dimensionArr as $k=>$v){            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();            $Dimension->setName($v);            array_push($dimensions,$Dimension);        }        // $orderBy=new \Google_Service_AnalyticsReporting_OrderBy();        // $orderBy->setFieldName('ga:itemQuantity');        // $orderBy->setSortOrder("DESCENDING");        $request = new \Google_Service_AnalyticsReporting_ReportRequest();        $request->setViewId($VIEW_ID);        $request->setDateRanges($dateRange);        $request->setMetrics($metrics);        $request->setDimensions($dimensions);        // $request->setOrderBys($orderBy);        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();        $body->setReportRequests( array( $request) );        $reports= $analytics->reports->batchGet( $body );        $result=$this->getResults($reports);         return $result;    }    public function productInfo($productName,$dp,$start_at,$end_at){        $analytics=self::getInstance($dp);        $dimensionArr=[            'productName'=>'ga:productName',        ];        $metricArr=[            'itemRevenue'=>"ga:itemRevenue",            'revenuePerItem'=>"ga:revenuePerItem",            'productRefundAmount'=>"ga:productRefundAmount",            'quantityAddedToCart'=>"ga:quantityAddedToCart",            // 'quantityRemovedFromCart'=>"ga:quantityRemovedFromCart",            'itemQuantity'=>"ga:itemQuantity",            'productListViews'=>"ga:productListViews",            'productDetailViews'=>"ga:productDetailViews",            'productAddsToCart'=>"ga:productAddsToCart",            // 'productRemovesFromCart'=>"ga:productRemovesFromCart",            'productCheckouts'=>"ga:productCheckouts",            'uniquePurchases'=>"ga:uniquePurchases",        ];               $VIEW_ID = $this->getViewId($dp);//        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();        $dateRange->setStartDate($start_at);        $dateRange->setEndDate($end_at);        $metrics=[];        $dimensions=[];        foreach($metricArr as $k=>$v){            $Metric = new \Google_Service_AnalyticsReporting_Metric();            $Metric->setExpression($v);            $Metric->setAlias($k);            array_push($metrics,$Metric);        }        foreach($dimensionArr as $k=>$v){            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();            $Dimension->setName($v);            array_push($dimensions,$Dimension);        }        $skuFilter = new \Google_Service_AnalyticsReporting_DimensionFilter();        $skuFilter->setDimensionName("ga:productName");        $skuFilter->setOperator("EXACT");        $skuFilter->setExpressions([$productName]);        $MetricFilterClause=new \Google_Service_AnalyticsReporting_MetricFilterClause();        $MetricFilterClause->setFilters(array($skuFilter));        $request = new \Google_Service_AnalyticsReporting_ReportRequest();        $request->setViewId($VIEW_ID);        $request->setDateRanges($dateRange);        $request->setMetrics($metrics);        $request->setDimensions($dimensions);        $request->setDimensionFilterClauses($MetricFilterClause);        // $request->setOrderBys($orderBy);        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();        $body->setReportRequests( array( $request) );        $reports= $analytics->reports->batchGet( $body );        $result=$this->getResults($reports);         return $result;    }    public function goals($dp,$metricArr,$start_at,$end_at){        $analytics=self::getInstance($dp);        $dimensionArr=[            // 'date'=>'ga:date',            // 'sessionCount'=>'ga:sessionCount',        ];               $VIEW_ID = $this->getViewId($dp);//        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();        $dateRange->setStartDate($start_at);        $dateRange->setEndDate($end_at);        $metrics=[];        $dimensions=[];        foreach($metricArr as $k=>$v){            $Metric = new \Google_Service_AnalyticsReporting_Metric();            $Metric->setExpression($v);            $Metric->setAlias($k);            array_push($metrics,$Metric);        }        foreach($dimensionArr as $k=>$v){            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();            $Dimension->setName($v);            array_push($dimensions,$Dimension);        }        $request = new \Google_Service_AnalyticsReporting_ReportRequest();        $request->setViewId($VIEW_ID);        $request->setDateRanges($dateRange);        $request->setMetrics($metrics);        $request->setDimensions($dimensions);        // $request->setOrderBys($orderBy);        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();        $body->setReportRequests( array( $request) );        $reports= $analytics->reports->batchGet( $body );        $result=$this->getResults($reports);         return $result;    }        public function regionProduct($region,$dp,$start_at,$end_at){        $analytics=self::getInstance($dp);        $dimensionArr=[            'region'=>'ga:region',        ];        $metricArr=[            'itemRevenue'=>"ga:itemRevenue",            'revenuePerItem'=>"ga:revenuePerItem",            'productRefundAmount'=>"ga:productRefundAmount",            'quantityAddedToCart'=>"ga:quantityAddedToCart",            // 'quantityRemovedFromCart'=>"ga:quantityRemovedFromCart",            'itemQuantity'=>"ga:itemQuantity",            'productListViews'=>"ga:productListViews",            'productDetailViews'=>"ga:productDetailViews",            'productAddsToCart'=>"ga:productAddsToCart",            // 'productRemovesFromCart'=>"ga:productRemovesFromCart",            'productCheckouts'=>"ga:productCheckouts",            // 'uniquePurchases'=>"ga:uniquePurchases",            'transactions'=>"ga:transactions",        ];               $VIEW_ID = $this->getViewId($dp);//        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();        $dateRange->setStartDate($start_at);        $dateRange->setEndDate($end_at);        $metrics=[];        $dimensions=[];        foreach($metricArr as $k=>$v){            $Metric = new \Google_Service_AnalyticsReporting_Metric();            $Metric->setExpression($v);            $Metric->setAlias($k);            array_push($metrics,$Metric);        }        foreach($dimensionArr as $k=>$v){            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();            $Dimension->setName($v);            array_push($dimensions,$Dimension);        }        $regionFilter = new \Google_Service_AnalyticsReporting_DimensionFilter();        $regionFilter->setDimensionName("ga:region");        $regionFilter->setOperator("EXACT");        $regionFilter->setExpressions([$region]);        $MetricFilterClause=new \Google_Service_AnalyticsReporting_MetricFilterClause();        $MetricFilterClause->setFilters(array($regionFilter));        $request = new \Google_Service_AnalyticsReporting_ReportRequest();        $request->setViewId($VIEW_ID);        $request->setDateRanges($dateRange);        $request->setMetrics($metrics);        $request->setDimensions($dimensions);        $request->setDimensionFilterClauses($MetricFilterClause);        // $request->setOrderBys($orderBy);        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();        $body->setReportRequests( array( $request) );        $reports= $analytics->reports->batchGet( $body );                $result=$this->getResults($reports);         return $result;    }    public function storeData($dp,$start_at,$end_at){        $analytics=self::getInstance($dp);        $dimensionArr=[            // 'campaign'=>'ga:campaign'        ];        $metricArr=[            'transactions'=>"ga:transactions",            'transactionRevenue'=>"ga:transactionRevenue",            'itemQuantity'=>"ga:itemQuantity",            'adClicks'=>"ga:adClicks",//点击次数            'adCost'=>"ga:adCost",//成本            'CPC'=>"ga:CPC",//每次点击费用            'CTR'=>"ga:CTR",//点击率            'ROAS'=>"ga:ROAS",//回报率        ];               $VIEW_ID = $this->getViewId($dp);//        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();        $dateRange->setStartDate($start_at);        $dateRange->setEndDate($end_at);        $metrics=[];        $dimensions=[];        foreach($metricArr as $k=>$v){            $Metric = new \Google_Service_AnalyticsReporting_Metric();            $Metric->setExpression($v);            $Metric->setAlias($k);            array_push($metrics,$Metric);        }        foreach($dimensionArr as $k=>$v){            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();            $Dimension->setName($v);            array_push($dimensions,$Dimension);        }           $request = new \Google_Service_AnalyticsReporting_ReportRequest();        $request->setViewId($VIEW_ID);        $request->setDateRanges($dateRange);        $request->setMetrics($metrics);        $request->setDimensions($dimensions);        // $request->setOrderBys($orderBy);        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();        $body->setReportRequests( array( $request) );        $reports= $analytics->reports->batchGet( $body );                $result=$this->getResults($reports);         return $result;    }    public function storeSellData($dp,$start_at,$end_at,$type="day"){        $analytics=self::getInstance($dp);        switch($type){            case "day":                $dimensionArr=[                    'date'=>'ga:date',                ];            break;            case "hour":                $dimensionArr=[                    'date'=>'ga:date',                    'hour'=>'ga:hour'                ];            break;            case "week":                $dimensionArr=[                    // 'year'=>'ga:isoWee',                    'week'=>'ga:isoYearIsoWeek',                ];            break;            case "month":                $dimensionArr=[                    'year'=>'ga:year',                    'month'=>'ga:month',                ];            break;        }                $metricArr=[            'itemQuantity'=>"ga:itemQuantity",        ];               $VIEW_ID = $this->getViewId($dp);//        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();        $dateRange->setStartDate($start_at);        $dateRange->setEndDate($end_at);        $metrics=[];        $dimensions=[];        foreach($metricArr as $k=>$v){            $Metric = new \Google_Service_AnalyticsReporting_Metric();            $Metric->setExpression($v);            $Metric->setAlias($k);            array_push($metrics,$Metric);        }        foreach($dimensionArr as $k=>$v){            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();            $Dimension->setName($v);            array_push($dimensions,$Dimension);        }           $request = new \Google_Service_AnalyticsReporting_ReportRequest();        $request->setViewId($VIEW_ID);        $request->setDateRanges($dateRange);        $request->setMetrics($metrics);        $request->setDimensions($dimensions);        // $request->setOrderBys($orderBy);        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();        $body->setReportRequests( array( $request) );        $reports= $analytics->reports->batchGet( $body );                $result=$this->getResults($reports);         return $result;    }       function getResults($reports) {        $data=[];        for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) {            $item=[];            $report = $reports[ $reportIndex ];                  $header = $report->getColumnHeader();            $dimensionHeaders = $header->getDimensions();            $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();            $rows = $report->getData()->getRows();                  for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {                $row = $rows[ $rowIndex ];                $dimensions = $row->getDimensions();                        $metrics = $row->getMetrics();                if($dimensionHeaders&&$dimensions){                    for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) {                        $header =   $dimensionHeaders[$i];                        $header=str_replace('ga:','',$header);                        $item[$header]=$dimensions[$i];                            // print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n\r");                            // echo"<br/>";                    }                    // $date=$dimensions[0];                    // $date=date('Y-m-d',strtotime($date));                        }                            if($metricHeaders&&$metrics){                    for ($j = 0; $j < count($metrics); $j++) {                        $values = $metrics[$j]->getValues();                        for ($k = 0; $k < count($values); $k++) {                            $entry = $metricHeaders[$k];                            $item[$entry->getName()]=$values[$k];                            // print($entry->getName() . ": " . $values[$k] . "\n\r");                            // echo"<br/>";                        }                    }                 }                $data[]=$item;            }        }        return $data;      }    }    
 |