过滤Google Analytics Reporting API的结果

Cha*_*man 8 google-analytics google-analytics-api

我使用报告API(版本4)和PHP客户端库成功地从Google Analytics下载结果.但我还没弄清楚如何正确过滤这些结果.

我看到这将如何通过cURL,但不通过客户端库.我查看了客户端库代码,并且有一个类方法:

apiclient-services/Google/Service/AnalyticsReporting/ReportRequest.php:
public function setMetricFilterClauses($metricFilterClauses)
Run Code Online (Sandbox Code Playgroud)

我没有看到任何文档或关联的get方法的任何用法:

public function getMetricFilterClauses()
Run Code Online (Sandbox Code Playgroud)

是否有通过PHP客户端库使用过滤器的示例?

Mat*_*att 28

背景

谷歌API客户端库从生成谷歌搜索服务.和PHP客户端库生成setPropertygetProperty对资源的每个属性.

Analytics Reporting API V4

所述分析报告API V4参考文档 exhustively描述API.该开发者指南给出了基本的JSON例子客户端库将产生:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "dateRanges": [
        {"endDate": "2014-11-30", "startDate": "2014-11-01"}
      ],
      "metrics": [
        {"expression": "ga:pageviews"},
        {"expression": "ga:sessions"}
      ],
      "dimensions": [{"name": "ga:browser"}, {"name": "ga:country"}],
      "dimensionFilterClauses": [
        {
          "filters": [
            {
              "dimensionName": "ga:browser",
              "operator": "EXACT",
              "expressions": ["Chrome"]
            }
          ]
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

示例页面给出了在Python,Java和PHP和JavaScript的例子很多请求,这应该给你如何与各个客户端库工作的良好意识.但你是对的,没有使用过滤器的PHP的明确例子.

PHP过滤器示例

以下是与上述请求相同的示例:

// Create the DateRange object.
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("2014-11-01");
$dateRange->setEndDate("2014-11-30");

// Create the Metrics object.
$pageviews = new Google_Service_AnalyticsReporting_Metric();
$pageviews->setExpression("ga:pageviews");

$sessions = new Google_Service_AnalyticsReporting_Metric();
$sessions->setExpression("ga:sessions");

//Create the Dimensions object.
$browser = new Google_Service_AnalyticsReporting_Dimension();
$browser->setName("ga:browser");

$country = new Google_Service_AnalyticsReporting_Dimension();
$country->setName("ga:country");

// Create the DimensionFilter.
$dimensionFilter = new Google_Service_AnalyticsReporting_DimensionFilter();
$dimensionFilter->setDimensionName('ga:browser');
$dimensionFilter->setOperator('EXACT');
$dimensionFilter->setExpressions(array('Chrome'));

// Create the DimensionFilterClauses
$dimensionFilterClause = new Google_Service_AnalyticsReporting_DimensionFilterClause();
$dimensionFilterClause->setFilters(array($dimensionFilter));

// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId("XXXX");
$request->setDateRanges($dateRange);
$request->setDimensions(array($browser, $country));
$request->setDimensionFilterClauses(array($dimensionFilterClause));
$request->setMetrics(array($pageviews, $sessions));

$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
return $analyticsreporting->reports->batchGet( $body );
Run Code Online (Sandbox Code Playgroud)

你可能已经注意到我从未使用过$object->getProperty().基本上它只会给我当前的价值.在调用API时,您应该只需要$object->setProperty($value);为什么我为您提供了生成客户端库的背景知识.

结论

Analytics Reporting API本身很复杂,并且有许多客户端库语言.在每种可能的客户端库语言中,并不总是能够举例说明API的每种可能用法.这就是为什么有必要了解如何查看参考文档并理解如何从所描述的结构生成客户端库的原因.

  • 万一有人想知道Google_Service_AnalyticsReporting_DimensionFilterClause $ dimensionFilter-> setOperator('EXACT')上的'EXACT'字符串; 以下是可能的选项列表:https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet#Operator我有一个REALLY.HARD.TIME发现这个 (6认同)