php - 如何使用 PHP 在 Google Analytics Core reporting API V4 上设置维度别名

标签 php pagination google-analytics-api

我正在使用 Google Analytics Core Reporting API V4 将 Google Analytics Reporting API v4 集成到我的网站

我设置了报告 API 以返回最多 10 个结果。我的问题是我无法找到如何获取下一个或前 10 个结果,因为它总是返回前 10 个结果。

有没有办法使用 Google Analytics Core Reporting API v4 获取下一个和/或上一个 10 个结果?

我的 PHP 代码如下:

// Create the ReportRequest object.   

$request = new Google_Service_AnalyticsReporting_ReportRequest();  
$request->setViewId($VIEW_ID);   
$request->setDateRanges($dateRange); 
$request->setPageSize(10);  
//===========================================================      
//  HOW DO I SET TO SHOW DIFFERENT PAGE THAN A FIRST PAGE     
//  HOW DO I SHOW RESULTS 20-30   
//===========================================================

//$request->setPageToken($page_token); 

$request->setDimensions($dimensions);   
$request->setMetrics($metrics);  
$request->setDimensionFilterClauses($dimensionFilterClause);
$request->setMetricFilterClauses(array($metricFilterClause));
$request->setOrderBys($ordering); 
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();  
$body->setReportRequests( array( $request) );   
return  $analytics->reports->batchGet( $body );

我发现有一个函数 setPageToken() 和函数 getPageToken() 我认为它们必须与此相关。

有人可以解释一下如何做到这一点吗?这个例子非常有用。谢谢。

最佳答案

客户端库

PHP client librariesreference docs 中找到的资源描述生成。任何Object()将成为 PHP 客户端库中的一个类。例如 Object(Metric] 将变成 Google_Service_AnalyticsReporting_Metric 。能够查看资源描述并理解生成的类的结构非常重要,否则无法使用生成的源来指导您了解类的结构。

因此,在您的问题标题中,您会问:“如何设置维度别名?”如果您查看资源描述和生成的源,您只会注意到 Metric类具有属性 alias 。这是因为Metric对象采用 expression字段,而不是 name field 。事实上,您可以提供一个数学表达式,例如 ga:sessions * ga:users但这样的字符串可能会令人困惑,因此您可能需要设置 alias为此expression .

API 限制和配额

您一次请求 10 行并希望对它们进行分页。我强烈鼓励您提出最大的要求,以最有效地利用您的 API quota 。 API 是共享资源,如果您使用效率低下,它不会带您走得那么远。话虽如此,我将在下面描述如何进行分页。

分页 PHP

假设您仔细阅读了Hello Analytics PHP,就知道如何通过身份验证和所有内容发出成功的请求。指南:

  // Create the ReportRequest object.
  $request = new Google_Service_AnalyticsReporting_ReportRequest();
  $request->setViewId($VIEW_ID);
  $request->setDateRanges($dateRange);
  $request->setMetrics($metrics);
  $request->setDimensions($dimensions);

  $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
  $body->setReportRequests( array( $request) );
  $response = $analytics->reports->batchGet( $body );

太棒了,干得好。最困难的部分就在你身后。你是一个聪明的编码员,所以你会捕获这一点 $response$request因为你怀疑它们可能很重要。所以你继续解析响应:

  for ( $reportIndex = 0; $reportIndex < count( $response ); $reportIndex++ ) {
    $report = $response[ $reportIndex ];
    $header = $report->getColumnHeader();
    $dimensionHeaders = $header->getDimensions();
    $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
    $rows = $report->getData()->getRows();
    $nextPageToken = $report->getNextPageToken();
    ...
    }

您从该报告中获得了一些不错的信息,一些维度和指标看起来您的新电子商务网站运行良好。事实上,自从您点击 pageSize 以来,您需要从此报告中获取更多数据。在您获得规划第三季度策略所需的所有行之前。没关系,你是一个聪明的程序员,你坚持了这一点 $request$nextPageToken 。你清楚地知道该做什么;您将使用 $nextPageToken 再次调用 API :

  $request->setPageToken($nextPageToken);

  $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
  $body->setReportRequests( array( $request) );
  $response = $analytics->reports->batchGet( $body );

因此,您刚刚翻阅了多个页面。冲洗并重复。 对于那些想要 JSON 的人等效于此:

JSON 分页示例

原始请求:

{
  "reportRequests": 
  [
    {
      "viewId": "XXXX",
      "metrics": 
      [
        {
          "expression": "ga:users"
        }
      ],
      "dimensions": 
      [
        {
          "name": "ga:pagepath"
        },
        {
          "name": "ga:browser"
        },
        {
          "name": "ga:country"
        }
      ]
    }
  ]
}

回应:

{
 "reports": [
  {
   "columnHeader": {
    "dimensions": [
     "ga:pagepath",
     "ga:browser",
     "ga:country"
    ],
    "metricHeader": {
     "metricHeaderEntries": [
      {
       "name": "ga:users",
       "type": "INTEGER"
      }
     ]
    }
   },
   "data": {
    "rows": [
    ...

    ],
    "totals": [
     {
      "values": [
       "3739"
      ]
     }
    ],
    "rowCount": 1109,
    "minimums": [
     {
      "values": [
       "1"
      ]
     }
    ],
    "maximums": [
     {
      "values": [
       "359"
      ]
     }
    ]
   },
   "nextPageToken": "1000"
  }
 ]
}

第二个请求:

{
  "reportRequests": 
  [
    {
      "viewId": "XXXX",
      "metrics": 
      [
        {
          "expression": "ga:users"
        }
      ],
      "dimensions": 
      [
        {
          "name": "ga:pagepath"
        },
        {
          "name": "ga:browser"
        },
        {
          "name": "ga:country"
        }
      ],
      "pageToken": "1000"
    }
  ]
}

关于php - 如何使用 PHP 在 Google Analytics Core reporting API V4 上设置维度别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38639829/

相关文章:

google-api - Java google api离线访问

php - 在 Shopify 上显示 Twitter 而不会遇到任何 API 限制问题

php - 在 Symfony2 中使用 Imagick?

javascript - 将 javascript 变量传递给 Twig

php - Javascript 将内容写入 PHP var 以在 IF 语句中使用不起作用

javascript - 在动态创建的所有 div 元素上添加前端分页

php - 将页码添加到分页页面上的元标题 Wordpress、Yoast

ios - 我想使用 Objective C 使用 PREV 和 NEXT 按钮设置分页?

email - 如何通过谷歌分析跟踪邮件在哪个电子邮件客户端上打开?

python - 在 Google Analytics API 中使用多个表达式