无法从 Google Analytics Core Reporting Results JSON 对象中检索 query


Cannot retrieve query.start-index variable from Google Analytics Core Reporting Results JSON Object

我正在构建一个Google Analytics仪表板并已经完成,但是我完全被这件真正让我挂在的事情上。

当我在 GA Core Reporting API 中查询数据集时,我成功获取并能够显示结果,并且一切正常,除了我无法查询 JSON 对象的"启动索引"。也就是说,它将显示的第一行(默认值 = 1,但 GA 一次只返回 10k 行,因此,如果您有一个包含>10k 行的数据集,这变得至关重要!

要尝试获取此整数,我使用

$start = $results->query.start-index;

作为检查以确保我没有疯,"max-results"就在 JSON 对象中的"start-index"旁边,这工作正常:

$max = $results->totalResults;

这是 GA JSON 对象(每 https://developers.google.com/analytics/devguides/reporting/core/v3/reference#startIndex)

{
"kind": "analytics#gaData",
 "id": string,
"selfLink": string,
"containsSampledData": boolean,
"query": {
  "start-date": string,
  "end-date": string,
  "ids": string,
  "dimensions": [
    string
  ],
  "metrics": [
    string
  ],
  "sort": [
    string
  ],
  "filters": string,
  "segment": string,
  "start-index": integer,
  "max-results": integer
},
"itemsPerPage": integer,
"totalResults": integer,
"previousLink": string,
"nextLink": string,
"profileInfo": {
  "profileId": string,
  "accountId": string,
  "webPropertyId": string,
  "internalWebPropertyId": string,
  "profileName": string,
  "tableId": string
},
"columnHeaders": [
  {
    "name": string,
    "columnType": string,
    "dataType": string
  }
],
"rows": [
  [
    string
  ]
],
"totalsForAllResults": [
  {
    metricName: string,
    ...
  }
]
}

帮助!提前致谢

PHP 中的属性名称既不能包含 . 也不能包含 - 。您的代码被解释为数组的字符串串联,其结果是两个字符串的数学减法(如果您从该描述中看不到我的意思,甚至不要开始尝试理解这一点)。

PHP在这一点上实际上是一个完全的后端痛苦,你必须通过将TRUE传递给json_decode()的第二个参数来强制它将解码的数据转换为关联数组而不是对象。然后,您可以通过数组键访问数据:

例如

$results = json_decode($jsonString, TRUE);
$start = $results['query']['start-date'];

所以我仍然不完全确定为什么这样做,但我使用以下函数成功地拉出了正确的起始索引号:

function getStartIndex(&$results) {
  $query = $results->getQuery();
  foreach ($query as $paramName => $value) {
    if($paramName == "start-index")
    $startIndex = $value;
  }
  return $startIndex;
}

这实质上是遍历整个$query关联数组,直到找到参数与"start-index"匹配的数组,然后返回值。