背景
Google API Client libraries 是从Google Discovery Service 生成的。 PHP client library 为资源的每个属性生成 setProperty 和 getProperty。
分析报告 API V4
Analytics Reporting API V4 reference docs 详尽地描述了 API。 Developer Guide 给出了客户端库将生成的底层 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"]
}
]
}
]
}
]
}
Samples page 提供了许多 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 );
您可能已经注意到,我从未使用过$object->getProperty()。基本上它所能做的就是给我它的当前价值。调用 API 时,您应该只需要 $object->setProperty($value); 因此我给您介绍了生成客户端库的背景。
结论
Analytics Reporting API 本身很复杂,并且有多种客户端库语言。并非总是可以在每种可能的客户端库语言中给出 API 的每种可能用法的示例。这就是为什么有必要了解如何查看参考文档并了解如何从所描述的结构生成客户端库。