request->get('view_id') ?? '119240817'; $get_metrics = $this->request->get('metric') ?? 'users'; $get_start_date = $this->request->get('start') ?? '30daysAgo'; $get_end_date = $this->request->get('end') ?? 'today'; $get_dimensions = $this->request->get('dimension'); putenv('GOOGLE_APPLICATION_CREDENTIALS=/var/www/phalcon/'.self::SECRET_JSON); $client = new Google_Client(); $client->useApplicationDefaultCredentials(); $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); $analytics = new Google_Service_AnalyticsReporting($client); // Создание объекта DateRange. $dateRange = new Google_Service_AnalyticsReporting_DateRange(); $dateRange->setStartDate($get_start_date); $dateRange->setEndDate($get_end_date); // Создание объекта Metrics. $metrics = []; $get_metrics = explode(',', $get_metrics); foreach ($get_metrics as $metric) { $metrics_obj = new Google_Service_AnalyticsReporting_Metric(); $metrics_obj->setExpression('ga:'.$metric); $metrics_obj->setAlias('ga:'.$metric); $metrics[] = $metrics_obj; } //Create the Dimensions object. if (!empty($get_dimensions)) { $dimensions = []; $get_dimensions = explode(',', $get_dimensions); foreach ($get_dimensions as $dimension) { $dimension_obj = new Google_Service_AnalyticsReporting_Dimension(); $dimension_obj->setName("ga:".$dimension); $dimensions[] = $dimension_obj; } } // Создание объекта ReportRequest. $request = new Google_Service_AnalyticsReporting_ReportRequest(); $request->setViewId($view_id); $request->setDateRanges($dateRange); if (!empty($dimensions)) { $request->setDimensions(array($dimensions)); } $request->setMetrics(array($metrics)); $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); $body->setReportRequests(array($request)); $response = $analytics->reports->batchGet($body); /** @var \Google_Service_AnalyticsReporting_Report $report */ $report = $response->getReports(); $data = $report[0]; return var_dump($report); $obj = $response->toSimpleObject(); $obj = $obj->reports[0]['data']['rows']; $result = []; foreach ($response as $item) { $metric_val = $item['metrics'][0]['values']; $dimension_val = $item['dimensions'][0]; if (count($metric_val) > 1) { for ($i = 0; $i < count($metric_val); $i++) { $result[$dimension_val][] = $metric_val[$i]; } } else { $result[$dimension_val] = $metric_val[0]; } } return ($result); } public function printResults($reports) { $res = ''; for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) { $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(); for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) { print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n"); } for ($j = 0; $j < count( $metricHeaders ) && $j < count( $metrics ); $j++) { $entry = $metricHeaders[$j]; $values = $metrics[$j]; //print("Metric type: " . $entry->getType() . "\n" ); for ( $valueIndex = 0; $valueIndex < count( $values->getValues() ); $valueIndex++ ) { $value = $values->getValues()[ $valueIndex ]; $res .= "" . $entry->getName() . ": " . $value . '
'; } } } } return $res; } }