在用于php的Google Analytics Reporting API的第4版中,添加了文档状态支持,用于在一个请求中指定两个日期范围:
请求最多可包含2个日期范围
但是我没有看到任何关于如何添加两个日期范围的示例,而没有手动创建整个请求JSON(即我使用的是Google quick start guide中概述的功能方法)。在指南中,日期范围由:
type object 'User' has no attribute 'birthday'
在许多函数中,要添加一个要设置的附加值,只需创建一个数组,所以我尝试了以下但是它无效:
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("STARTING_DATE");
$dateRange->setEndDate("ENDING_DATE");
作为最后的努力,我尝试将值格式化为JSON以符合创建的JSON请求对象,但这仍然无效:
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate(array("START_ONE", "START_TWO"));
$dateRange->setEndDate(array("END_ONE", "END_TWO"));
如果有人能够指出我出错的地方,或者通过使用这些功能甚至可以使用两个日期范围,那将会非常有帮助。
答案 0 :(得分:1)
创建两个日期范围对象,如multiple date ranges sample
// Create DateRange objects.
$march = new Google_Service_AnalyticsReporting_DateRange();
$march->setStartDate("2015-03-01");
$march->setEndDate("2015-03-31");
$january = new Google_Service_AnalyticsReporting_DateRange();
$january->setStartDate("2015-01-01");
$january->setEndDate("2015-01-31");
...
// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId("XXXX");
$request->setDateRanges(array($march, $january));
$request->setDimensions(array($browser));
$request->setMetrics(array($sessions));
请注意,它不能与ga:date
一起使用多个日期范围。要阅读结果,您需要访问响应中的两个字段:
function printResults(&$reports) {
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++) {
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];
print($entry->getName() . ": " . $values[$k] . "\n");
}
}
}
}
}