2011-01-06 9 views
2

Guten Tag! Ich habe StackOverflow und das Internet seit ungefähr 24 Stunden durchsucht, und ich habe noch keine Antwort gefunden. Ich hoffe, dass mir etwas Einfaches entgeht, auf das ein erfahrener API-Nutzer für mich hinweisen kann.Google Analytics API - Filtern über .NET - So nah!

Ich frage die Google Analytics-API mit ihrer .NET-Bibliothek ab. Diese Anfrage funktioniert:

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 

... aber ich möchte die Ergebnisse filtern. Ich habe einen einzigen sehr einfachen Filter versucht, die keine URL-Codierung erfordern:

filters=ga:[email protected] 

Alles, was ich bekommen, ist die maddeningly vage „400 Ungültige Anforderung“ Fehler. Ich bekomme das gleiche Ergebnis mit dem Gleichheitsoperator:

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

Dito, wenn ich die Gleichheitszeichen als% 3D kodiere. Dies wird entsprechend der Fehlermeldung in "ga: city% 253D% 253DMinsk" übersetzt. Ich habe versucht, "Minsk" zu zitieren und doppelt zu zitieren; kein Glück.

Ich bin ratlos. Irgendwelche Ideen? Vielen Dank!

Antwort

3

Es gefunden. Es stellt sich heraus, dass Filter mit den tatsächlich in einer Abfrage ausgedrückten Dimensionen und Metriken "kompatibel" sein müssen. Dropping ga: Besucher erlaubten mir, die meisten der Filter, die ich brauchte, anzuwenden, obwohl die Kombination von ga: pagePath und ga: campaign mit ga: visits ... aus irgendeinem Grund nicht erlaubt ist. Hier ist das Detail, aber seien Sie gewarnt: Sie können schielen.

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

Oh, und mit Hilfe der .NET-Bibliothek, die Sie brauchen nicht zu kodieren Zeichen oder Leerzeichen in Ihren Filter entspricht. Ich strukturierte meine Filter so:

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

Hoffe, das hilft jemandem!

Verwandte Themen