Google AnalyticsAPI - 以不需要的顺序返回的部分

时间:2018-01-05 12:52:07

标签: google-analytics-api

使用GA API v4,我正在尝试从Google Analytics中定义的多个细分中检索数据。我的应用程序不知道这些段的名称,但是我们可以说它们在GA中称为A,B,C和D. (其他用户可以重命名段,因此名称实际上是不可预测的。)

我的应用程序确实有这些段的ID是硬编码的。 (从https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtReference/management/segments/list手动检索。)

现在确定数据列表应以某种预定义的重要性顺序呈现。 (也就是说,不按字母顺序排列。)

因此,我按照所需的顺序向GA API发送一个带有segments数组的查询:

reportRequests["0"].segments[
  { segmentId: <id-for-segment-C> },
  { segmentId: <id-for-segment-B> },
  { segmentId: <id-for-segment-D> },
  { segmentId: <id-for-segment-A> }
]

令我惊讶的是,返回的数据集按字段名称的字母顺序排序!

reports["0"].data.rows[
  { dimensions: [ "A" ], ... },
  { dimensions: [ "B" ], ... },
  { dimensions: [ "C" ], ... },
  { dimensions: [ "D" ], ... }
]

让事情变得更糟:

  1. 返回的数据不包含段ID,我只能通过单独的API调用来检索哪些段名与哪个ID对应的信息来关联它们。
  2. 字母排序是使用英语规则完成的,而不是使用区域规则。 (段名称包括“Å”字符,根据挪威规则应该在字母表的末尾,但是在英语排序的开头。)
  3. 我只是在想象事情吗?我是否因为不完全理解API的工作原因而导致问题?这是API中的错误吗?或者这实际上是设计?

1 个答案:

答案 0 :(得分:0)

1)您使用的是v3还是v4版本?如果是v3,请尝试v4并查看是否有帮助。另一种方法是使用dynamicSegments(我总是使用)而不是segmentIds:这些可以存储在您的数据库中,解决段ID名称解析问题,还可以避免GA维护问题(用户修改分段然后破坏你的应用程序。)

2)是的,它们可能音译(Å - > A)并且仅在之后排序。我真的不会浪费时间来研究这个问题,我怀疑谷歌会不会改变它(它本身并不是一个坏行为,API旨在支持编码,而不是人类语言的微妙之处,大多数人,尤其是美国的Google工程师,不会在意:))