2

こんにちは!StackOverflow と Web を約 24 時間検索していますが、まだ答えが見つかりません。経験豊富な API ユーザーが私に指摘できるような単純なものが欠けていることを願っています。

.NET ライブラリを使用して Google アナリティクス 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 エンコーディングを必要としない非常に単純なフィルターを 1 つ試してみました。

filters=ga:city!@Minsk

私が得るのは、非常に漠然とした「400 bad request」エラーだけです。equals 演算子を使用しても同じ結果が得られます。

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

等号を %3D としてエンコードする場合も同様です。エラー メッセージによると、これは「ga:city%253D%253DMinsk」に変換されます。「Minsk」を一重引用符で囲み、二重引用符で囲んでみました。運がない。

私は困惑しています。何か案は?ありがとう!

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 に答える