Google Analytics报告使用两个日期范围

时间:2017-06-27 16:54:39

标签: php google-analytics

在用于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"));

如果有人能够指出我出错的地方,或者通过使用这些功能甚至可以使用两个日期范围,那将会非常有帮助。

1 个答案:

答案 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");
        }
      }
    }
  }
}