2010-02-19 11 views
5

J'essaie d'obtenir l'URL 'normale' pour un flux de calendrier par défaut des utilisateurs (par exemple http://www.google.com/calendar/feeds/[email protected]/private/full). Je souhaite utiliser la partie [email protected] de l'URL en tant qu'ID unique pour ce calendrier.API Google Calendar: Comment obtenir un CalendarEntry pour le Calendrier par défaut?

Je sais que je peux faire des choses avec le calendrier par défaut en utilisant l'URL http://www.google.com/calendar/feeds/default/private/full. Cependant, je ne peux pas trouver un moyen de construire un CalendarEntry à partir de cette URL (je pourrais alors essayer SelfUri et d'autres propriétés pour voir si l'URL 'normale' est là quelque part), ou pour le convertir en URL 'normale' de quelque manière que.

Et je sais que je peux obtenir la liste des calendriers comme celui-ci:

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) 
{ ... } 

Cependant, je ne peux pas trouver un moyen de savoir lequel de ces entrées correspond au calendrier par défaut.

Ou tout autre moyen d'obtenir cette URL normale pour le calendrier par défaut.

Répondre

3

Il est probablement pas la meilleure méthode, mais j'utiliser cela et il fonctionne:

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) 

utiliser juste calendarIndex = 0 pour le calendrier par défaut. Ne devrait pas être trop difficile à convertir en C#!

+0

J'ai vu aussi que le calendrier par défaut est l'index 0 dans mes recherches, mais je ne trouve aucune référence à ce nulle part. Donc je suppose que demain, google pourrait changer d'avis et le mettre en dernier (par exemple pour des raisons de performance)? – Legolas

2

Merci beaucoup! Cela fonctionne parfaitement! Voici mon code final:


 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++; 
     } 
Questions connexes