Google Analytics API V4(谷歌统计实战)

海外服务网站 利用谷歌统计实战,实现用户数据分析

谷歌统计网址:https://analytics.google.com

1、注册谷歌统计账号

如果有谷歌账号,一般会自动注册(有待测试)

2、创建媒体资源

点击左侧“管理”右侧弹出三列,分别为:“账号”、“媒体资源”、“数据视图”

点击“媒体资源”栏目下的“媒体资源设置”

填写媒体资源名称、默认网址(就是您需要跟踪的网站网址)

3、创建数据视图

点击“数据视图”栏目下的“数据视图设置”

填写数据视图名称、网站网址、币种显示(如果网站平台为电子商务平台,需要收集交易数据,则应选择平台使用的币种)

4、向网站紧贴

标签添加全局代码:

 代码位置:“媒体资源”栏目下“.js 跟踪代码”->“跟踪代码”
 以下代码可以自行优化,比如自己增加 用户 IP 指标等等




php 获取分析数据

参考文档 :https://developers.google.com/analytics/devguides/config/mgmt/v3?hl=zh-cn

第 1 步:启用 Google Analytics(分析)API
要开始使用 Google Analytics(分析)API,需要先使用设置工具,该工具会引导您在 Google API 控制台中创建项目,启用 API 以及创建凭据。

创建客户端 ID
打开服务帐号页。如果看到相关提示,请选择项目。
点击创建服务帐号。
在创建服务帐号窗口中,键入服务帐号的名称,然后选择提供新的私钥。如果您希望将 G Suite 全网域权限授予该服务帐号,另请选中启用 G Suite 全网域委派功能。然后点击保存。
您的新公钥/私钥对已生成并下载到您的计算机;该密钥仅此一份,您负责安全存储该密钥。

当系统提示您提供“密钥类型”时,选择 JSON,并将生成的密钥另存为 service-account-credentials.json;在本教程的后面,您将需要用到该密钥。
将服务帐号添加到 Google Analytics(分析)帐号中
新建服务帐户的电子邮件地址为 [email protected],可用于向您想通过该 API 访问的 Google Analytics(分析)帐户添加用户。就本教程涵盖的内容而言,只需阅读和分析权限即可。

第 2 步:安装 Google 客户端库
要获得适用于 PHP 的 Google API 客户端库,您可以下载此版本或使用 Composer:

composer require google/apiclient:^2.0

第 3 步:设置示例代码
您需要创建一个名为 HelloAnalytics.php 的文件,其中将包含以下示例代码。

将以下源代码复制或下载到 HelloAnalytics.php 中。
将先前下载的 service-account-credentials.json 移到示例代码所在的目录中。
首先要先在后套
title = '管理后台';

?>

    
['index/index'], 'method' => 'post']); ?>
$model, 'attribute' => 'start_date', 'attribute2' => 'end_date', 'options' => ['placeholder' => '开始时间'], 'options2' => ['placeholder' => '结束时间'], 'type' => DatePicker::TYPE_RANGE, 'separator' => '-', 'pluginOptions' => [ 'endDate'=>'+1', 'format' => 'yyyy-mm-dd', 'autoclose' => true, ] ]); ?>
'btn btn-primary']) ?>
title->text = '浏览量(总浏览量'.$visite.')'; //标题 // $chart->title->subtext = '日期 ' . $day; //副标题 $chart->title->left = 'center'; //标题距离左侧的距离,这里设为居中 $chart->tooltip->show = true; //提示框显示 $chart->tooltip->trigger = 'axis'; //数据项图形触发 $chart->legend->data = ['浏览量', '访客数', '新访客数']; //图例组件 ,'IP数' $chart->legend->left = 'right'; //图例组件显示在右边 $chart->color = ['#d14a61', '#3c8dbc', 'green', 'orange']; //颜色就在这里定义,series会按顺序使用这些颜色。 $chart->xAxis = array( 'type' => 'category', 'data' => $data['DAY'], ); $chart->yAxis = [ [ 'type' => 'value', 'name' => '浏览量', 'min' => 0, 'axisLine' => [ 'lineStyle' => [ 'color' => 'green'//定义Y轴颜色 ] ], 'axisLabel' => [ 'formatter' => "{value}"//定义Y轴刻度标签 ], ], ]; $chart->series = [ [ 'name' => '浏览量', 'type' => 'line', 'data' => $data['DAV'], ], // [ // 'name' => 'IP数', // 'type' => 'line', // 'data' => $data['DIP'], // ], [ 'name' => '访客数', 'type' => 'line', 'data' => $data['DAU'], ], [ 'name' => '新访客数', 'type' => 'line', 'data' => $data['DNU'], ], ]; echo $chart->render('simple-custom-1'); ?>
 public function initializeAnalytics()
    {
        // Use the developers console and download your service account
        // credentials in JSON format. Place them in this directory or
        // change the key file location if necessary.
        $KEY_FILE_LOCATION = __DIR__ . '/client_secrets.json';

        // Create and configure a new client object.
        $client = new \Google_Client();
        $client->setApplicationName("Hello Analytics Reporting");
        $client->setAuthConfig($KEY_FILE_LOCATION);
        $client->setDeveloperKey('OAuth 客户端的ID');
        $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
        $analytics = new \Google_Service_AnalyticsReporting($client);

        return $analytics;
    }

    public function actionIndex()
    {
        $analytics =  $this->initializeAnalytics();
        $data = $this->getReport($analytics);
        return $this->render('index', $data);
    }
    /**
     * Queries the Analytics Reporting API V4.
     *
     * @param service An authorized Analytics Reporting API V4 service object.
     * @return The Analytics Reporting API V4 response.
     */
    public function getReport($analytics) {
        $model = new \app\models\DayCount();
        $startDate = date('Y-m-d', strtotime('-7 day'));
        $endDate = date('Y-m-d', time());
        if (Yii::$app->request->isPost) {
            $model->load(Yii::$app->request->post());
            $startDate = date('Y-m-d',strtotime($model->start_date));
            $endDate = date('Y-m-d',strtotime($model->end_date)) ;
        }
        else{
            $model->start_date = date('Y-m-d',  strtotime($startDate));
            $model->end_date = date('Y-m-d',  strtotime($endDate));
        }
        // Replace with your view ID, for example XXXX.
        $VIEW_ID = "216828575";  //数据视图ID

        // 配置时间范围
        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();
        $dateRange->setStartDate($startDate);
        $dateRange->setEndDate($endDate); //"2020-05-05"

        // 配置指标 (显示的字段). 方法一
//        $sessions = new \Google_Service_AnalyticsReporting_Metric();
//        $sessions->setExpression("ga:pageviews");// sessions
//        $sessions->setAlias("pageviews");
//        $sessions2 = new \Google_Service_AnalyticsReporting_Metric();
//        $sessions2->setExpression("ga:users");// users
//        $sessions->setAlias("users");

        //配置维度  (每日  分组)
        $browser = new \Google_Service_AnalyticsReporting_Dimension();
        $browser->setName("ga:date");//  ga:day  ga:nthDay   date

        // Create the ReportRequest object.
        $request = new \Google_Service_AnalyticsReporting_ReportRequest();
        $request->setViewId($VIEW_ID);
        $request->setDateRanges($dateRange);
        $request->setDimensions($browser);
        //配置查询指标  (显示的字段).  方法二
        $request->setMetrics([["expression"=>'ga:users'],["expression"=>'ga:pageviews'],["expression"=>'ga:newUsers']]);//array($sessions,$sessions2)
        $request->setMetricFilterClauses([[
            "filters"=>[[
                "metricName"=> "ga:users",
                "operator"=> "GREATER_THAN", //GREATER_THAN   MORE_THAN
                "comparisonValue"=> "-1"
            ]]
        ]]);
        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();
        $body->setReportRequests( array( $request) );
        $data = $analytics->reports->batchGet($body );
        $data_new = $this->printResults($data);
        $visite = array_sum($data_new['DAV']);
        return ['data'=>$data_new,'model'=>$model,'visite'=>$visite];
    }

    /**
     * Parses and prints the Analytics Reporting API V4 response.
     *
     * @param An Analytics Reporting API V4 response.
     */
    function printResults($reports) {
        $data = [];
        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++) {
                    $data['DAY'][] = $dimensions[$i];
//                    print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n");
                }
                //指标信息
                for ($j = 0; $j < count($metrics); $j++) {
                    $values = $metrics[$j]->getValues();
                    for ($k = 0; $k < count($values); $k++) {
                        $entry = $metricHeaders[$k];
                        //每日 浏览量
                        if($entry->getName() == 'ga:pageviews'){
                            $data['DAV'][] = $values[$k];
                        }
                        //每日 访客数
                        if($entry->getName() == 'ga:users'){
                            $data['DAU'][] = $values[$k];
                        }
                        //每日 新访客数
                        if($entry->getName() == 'ga:newUsers'){
                            $data['DNU'][] = $values[$k];
                        }
//                        $data[$entry->getName()]   = $values[$k];
//                        print($entry->getName() . ": " . $values[$k] . "\n");
                    }
                }
            }
        }
        return $data;
    }

你可能感兴趣的:(Google,Analytics,API,V4,谷歌统计,谷歌统计,GoogleAnalytics)