2010-02-19 3 views
5

Ich versuche, die 'normale' URL für den Standardkalender-Feed eines Benutzers zu erhalten (z. B. http://www.google.com/calendar/feeds/[email protected]/private/full). Ich möchte den [email protected] Teil der URL als eindeutige ID für diesen Kalender verwenden.Google Kalender-API: Wie bekomme ich einen Kalendereintrag für den Standardkalender?

Ich weiß, ich kann Dinge mit dem Standardkalender mit der URL http://www.google.com/calendar/feeds/default/private/full tun. Ich kann jedoch keinen Weg finden, einen CalendarEntry von dieser URL zu erstellen (ich könnte dann SelfUri und einige andere Eigenschaften ausprobieren, um zu sehen, ob die 'normale' URL irgendwo dort ist), oder sie in die 'normale' URL umwandeln in irgendeiner Weise.

Und ich weiß, ich kann die Liste der Kalender wie diese:

CalendarQuery query_cal = new CalendarQuery(); 
query_cal.Uri = new Uri("http://www.google.com/calendar/feeds/default/allcalendars/full"); 
CalendarFeed resultFeed = (CalendarFeed) service.Query(query_cal); 
foreach (CalendarEntry entry in resultFeed.Entries) 
{ ... } 

Allerdings kann ich keine Möglichkeit finden, zu wissen, welche diese Einträge entsprechen den Standardkalender.

Oder eine andere Möglichkeit, diese normale URL für den Standardkalender zu erhalten.

Antwort

3

Es ist wahrscheinlich nicht die beste Methode, aber ich benutze diese und es funktioniert:

feedstring = resultfeed.Entries.Item(calendarIndex).Id.AbsoluteUri.Substring(63) 
       postUristring = "https://www.google.com/calendar/feeds/" & feedstring & "/private/full" 

Dim postUri As New Uri(postUristring) 

Gerade calendarIndex = 0 für den Standardkalender verwenden. Sollte nicht zu schwer sein, um in C# zu konvertieren!

+0

Ich sah auch, dass der Standardkalender Index 0 in meinen Recherchen war, aber ich finde keinen Hinweis auf diesen überall. Also denke ich, dass Google morgen seine Meinung ändern und es zuletzt setzen könnte (z. B. aus Leistungsgründen)? – Legolas

2

Vielen Dank! Das funktioniert perfekt! Hier ist mein letzter Code:


 CalendarQuery query = new CalendarQuery(); 
     query.Uri = new Uri("https://www.google.com/calendar/feeds/default/allcalendars/full"); 
     CalendarFeed resultFeed = (CalendarFeed)service.Query(query); 
     int calendarIndex = 0; 
     string postUristring = string.Empty; 
     foreach (CalendarEntry entry2 in resultFeed.Entries) 
     { 
      if (entry2.Title.Text == "My Pregnancy Calendar") 
      { 
       string feedstring = resultFeed.Entries[calendarIndex].Id.AbsoluteUri.Substring(63); 
       postUristring = "https://www.google.com/calendar/feeds/" + feedstring + "/private/full"; 
      } 
      calendarIndex++; 
     }