2

下午好!我已经在 StackOverflow 和网络上搜索了大约 24 小时,但我还没有找到答案。我希望我遗漏了一些有经验的 API 用户可以为我指出的简单内容。

我正在使用他们的 .NET 库查询 Google Analytics API。此请求有效:

https://www.google.com/analytics/feeds/data?start-index=1&max-results=500&dimensions=ga:date&end-date=2011-01-06&ids=ga:________&metrics=ga:visitors,ga:visits&start-date=2011-01-06

...但我想过滤结果。我尝试了一个不需要 URL 编码的非常简单的过滤器:

filters=ga:city!@Minsk

我得到的只是令人发狂的模糊“400 bad request”错误。我使用等号运算符得到相同的结果:

DataQuery  query = new DataQuery(URL);
...
query.Filters = "ga:city==Minsk"

如果我将等号编码为 %3D,则同上。根据错误消息,这将被翻译成“ga:city%253D%253DMinsk”。我试过单引号“明斯克”,然后双引号;没运气。

我难住了。有任何想法吗?谢谢!

4

1 回答 1

3

找到了。事实证明,过滤器必须与查询中实际表达的维度和指标“兼容”。删除 ga:visitors 允许我应用我需要的大部分过滤器,尽管 ga:pagePath 和 ga:campaign 的组合不允许使用 ga:visits... 出于某种原因。这是细节,但请注意:您最终可能会眼花缭乱。

http://code.google.com/apis/analytics/docs/gdata/gdataReferenceValidCombos.html

哦,使用 .NET 库,您不需要在过滤器中编码等号或空格。我的过滤器结构如下:

private static readonly string  Filter = string.Join
  (
  ";", new string[]
    {
    "ga:city!=Simi Valley",  // URL encoding is handled for you
    "ga:pagePath!@/splash",
    "ga:pagePath!@static_test",
    "ga:networkLocation!@spring",
    "ga:networkLocation!@equinix asia pacific pte ltd"
    // ...
    }
  );

希望这对某人有帮助!

于 2011-01-13T00:26:46.530 回答