Php 如何从谷歌网站分析中查询数据?

Php 如何从谷歌网站分析中查询数据?,php,google-analytics,Php,Google Analytics,首先,我以前从未使用过google analytics,现在,当我需要了解它的流程时,会有点困惑 我在网上做了很多研究。我遇到的是,您需要拥有在开发人员控制台创建的密钥来进行身份验证。如果我有这个密钥,我可以按照找到的标准示例检索我想要的任何站点数据 然而,我有一些疑问: 我是自由职业者。所以我的客户让我访问他们网站的谷歌分析。那么,我如何读取分析数据,如访客数量等?由于我的电子邮件已经被允许访问数据,我可以查询,还是仍然需要json格式的身份验证密钥 如果我需要json密钥,它是如何工作的?这

首先,我以前从未使用过google analytics,现在,当我需要了解它的流程时,会有点困惑

我在网上做了很多研究。我遇到的是,您需要拥有在开发人员控制台创建的密钥来进行身份验证。如果我有这个密钥,我可以按照找到的标准示例检索我想要的任何站点数据

然而,我有一些疑问:

  • 我是自由职业者。所以我的客户让我访问他们网站的谷歌分析。那么,我如何读取分析数据,如访客数量等?由于我的电子邮件已经被允许访问数据,我可以查询,还是仍然需要json格式的身份验证密钥
  • 如果我需要json密钥,它是如何工作的?这是否像我在开发人员控制台中创建了一个密钥
    https://console.developers.google.com
    并使用此键读取客户端数据?这个密钥是否像一站式中心一样,只要他们将我添加到他们的帐户中,就可以验证我从任何站点访问任何api的身份
  • 我在这里访问我客户的谷歌分析数据:
    https://analytics.google.com/analytics/web
  • 请向我解释如何通过PHP读取其他人的网站数据的正确流程。我只需要总体思路


    提前感谢您。

    您有两个选项可用于基于帖子的搜索引擎的站点搜索:

    选项1:将web应用程序配置为将查询关键字附加到URL的末尾(例如),然后按照上一节中的说明设置站点搜索

    选项2:自定义结果页面上的跟踪代码,以动态指定包含查询关键字的虚拟页面路径。结果页面上的跟踪代码如下所示:

    analytics.js:ga('send','pageview','/search_results.php?q=keyword')

    参考资料:

    我试着举个例子 首先是谷歌客户端

    编写器需要“google/apiclient”

    在console.developers.google.com中:

    • 启用分析api
    • 定义项目(例如:项目id)
    2) 凭证文件

    在以下位置创建服务帐户:

    项目id

    您将在“路径/to/the/service-account-credentials.json”处创建凭证文件

    3) 定义所需内容($infos)、所需witch视图($viewId)、凭证文件($credentials\u文件)和日期范围,您将查询API并在$response中获得结果

     $infos= [
        'users'              => 'ga:users',
        'pageviews'              => 'ga:pageviews',
        'pageviewsPerSession' => 'ga:pageviewsPerSession',
        'unique page view'       => 'ga:uniquePageviews',
        'organicSearches'          => 'ga:organicSearches',
        'avgSessionDuration'      => 'ga:avgSessionDuration',
        'avgTimeOnPage'  => 'ga:avgTimeOnPage',
    ];
    $credentials_file='path/to/the/service-account-credentials.json';
    
    $viewId='1600000'; // the view ID see imgae            
    $client = new \Google_Client();
    $credentials_file = $this->checkServiceAccountCredentialsFile()) {
    $client->setAuthConfig($credentials_file);
    $client->addScope("https://www.googleapis.com/auth/analytics.readonly");
    $analytics = new \Google_Service_AnalyticsReporting($client);
    $response = getReport($viewId, $analytics, $infos, $DateStart, $DateEnd);
    

    添加获取报告功能

    function getReport($viewId, $analytics, $dataAnalytics, $startDate, $endDate)
        {
    
            $dateRange = new \Google_Service_AnalyticsReporting_DateRange();
            $dateRange->setStartDate($startDate);
            $dateRange->setEndDate($endDate);
    
    
            // Create the ReportRequest object.
            $request = new \Google_Service_AnalyticsReporting_ReportRequest();
            $request->setViewId($viewId);
            $request->setDateRanges($dateRange);
    
            // Create the Metrics object.
            $_metrics = [];
            foreach ($dataAnalytics as $gaLabel => $gaValue) {
                $metric = new \Google_Service_AnalyticsReporting_Metric();
                $metric->setExpression($gaValue);
    //            $metric->setAlias($gaLabel);
                $_metrics[] = $metric;
            }
    
            $request->setMetrics($_metrics);
    
            $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();
            $body->setReportRequests(array($request));
            return $analytics->reports->batchGet($body);
        }
    

    这个service-account-credentials.json如何指向我想要读取数据的域?我的意思是,创建的服务密钥独立于任何域,是吗?如果我想读取域A和域B的数据,它是如何进行的?@112233使用您从分析(最后一张图片)中获得的viewId,我看到了,所以这个服务密钥确实是一个独立于域的通用密钥。非常感谢。我会尝试一下。谢谢你的图片示例。它让我更了解。@112233添加了一个我忘记的函数(非常重要:D)
    function getReport($viewId, $analytics, $dataAnalytics, $startDate, $endDate)
        {
    
            $dateRange = new \Google_Service_AnalyticsReporting_DateRange();
            $dateRange->setStartDate($startDate);
            $dateRange->setEndDate($endDate);
    
    
            // Create the ReportRequest object.
            $request = new \Google_Service_AnalyticsReporting_ReportRequest();
            $request->setViewId($viewId);
            $request->setDateRanges($dateRange);
    
            // Create the Metrics object.
            $_metrics = [];
            foreach ($dataAnalytics as $gaLabel => $gaValue) {
                $metric = new \Google_Service_AnalyticsReporting_Metric();
                $metric->setExpression($gaValue);
    //            $metric->setAlias($gaLabel);
                $_metrics[] = $metric;
            }
    
            $request->setMetrics($_metrics);
    
            $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();
            $body->setReportRequests(array($request));
            return $analytics->reports->batchGet($body);
        }