2

我是 GA API 的新手,所以我不知道在这种情况下如何以正确的方式提取结果。

例如,我正在尝试根据 ga:pagePath = ... 的过滤提取 avgTimeOnPage 值

但是每个都在..上返回一个数字值,ga:pagePath所以我认为ga:pagePathandga:avgTimeOnPage结果没有正确显示。也许我没有提取正确的方法。

任何可以提供帮助的人将不胜感激。

$ids   = 'ga:123456789';
// $start_date $end_date already defined
$filter = 'ga:pagePath==/folder/somepage.html';    
$metrics = 'ga:avgTimeOnPage';
$optParams = array('dimensions' => 'ga:pagePath', 'filters' => $filter);
$data = $service->data_ga->
  get($ids, $start_date, $end_date, $metrics, $optParams);

foreach($data['totalsForAllResults'] as $rows) :

    echo $rows['ga:pagePath']; // why returning a single digit value?
    echo $rows['ga:avgTimeOnPage']; // also returns a single digit
endforeach;
4

1 回答 1

0

$data['totalsForAllResults']将返回单行,即总行。您正在寻找值而不是总数。所以你应该使用:

foreach ($data->getRows() as $row) :

然后你可以为每个单元格迭代 $rows 。

检查这个完整的例子:

private printDataTable(&$results) {
  if (count($results->getRows()) > 0) {
    $table .= '<table>';

    // Print headers.
    $table .= '<tr>';

    foreach ($results->getColumnHeaders() as $header) {
      $table .= '<th>' . $header->name . '</th>';
    }
    $table .= '</tr>';

    // Print table rows.
    foreach ($results->getRows() as $row) {
      $table .= '<tr>';
        foreach ($row as $cell) {
          $table .= '<td>'
                 . htmlspecialchars($cell, ENT_NOQUOTES)
                 . '</td>';
        }
      $table .= '</tr>';
    }
    $table .= '</table>';

  } else {
    $table .= '<p>No Results Found.</p>';
  }
  print $table;
}

来源:https ://developers.google.com/analytics/devguides/reporting/core/v3/coreDevguide#working

于 2012-12-20T22:33:55.857 回答