PHP Google Analytics API v4指标setAlias函数未返回正确的度量标题

时间:2016-09-07 01:41:05

标签: php google-analytics-api google-analytics-v4

我正在使用Google API V4 https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-php

我遇到了setAlias函数的问题。如果选择了多个指标,则所有返回的标题都相同。

代码:

   <?php
    $metrices = {FORM ARRY WITH MULTIPLE METRICES} 
       $nmetrices = array();
        if(is_array($metrices) && count($metrices) > 0){
          $i=0;
          foreach($metrices as $metric){
            $nmetrices[$i] = new     Google_Service_AnalyticsReporting_Metric();
            $nmetrices[$i]->setExpression($metric);
            $nmetrices[$i]->setAlias($metric);
            $i+=1;
          }
        }?>

示例:

我选择了“ga:users”和“ga:percentNewSessions”,但返回的结果标题为:“ga:users”这两个指标。

ga:medium: (none)
ga:date: 20150810
Metric type: INTEGER
**ga:users: 764
ga:users: 97.38219895287958**
ga:medium: (none)
ga:date: 20150811
Metric type: INTEGER
**ga:users: 2495
ga:users: 85.50284629981024**

1 个答案:

答案 0 :(得分:1)

我刚开始使用Analytics API v4并遇到了这个问题。提供的PHP代码不允许示例中的printResults()函数有多个指标,但Google的数据包含正确的别名。

来自Google的指标对象是单根,但指标标题对象是每个请求指标类型的单独条目。

这是一个更新的printResults()函数,可以满足多个指标。

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( $metricHeaders ); $j++) {
                $entry = $metricHeaders[$j];
                $values = $metrics[$rowIndex];
                $value = $values->getValues()[$j];
                print($entry->getName() . ": " . $value . "\n");
            }
        }
    }
}