2010-02-19 14 views
5

Estoy tratando de obtener la url "normal" para el feed de calendario predeterminado de un usuario (por ejemplo, http://www.google.com/calendar/feeds/[email protected]/private/full). Me gustaría usar la parte [email protected] de la URL como una identificación única para ese calendario.Google Calendar API: cómo obtener una entrada de calendario para el calendario predeterminado?

Sé que puedo hacer cosas con el calendario predeterminado usando la URL http://www.google.com/calendar/feeds/default/private/full. Sin embargo, no puedo encontrar una manera de construir una entrada de calendario desde esa URL (podría probar SelfUri y algunas otras propiedades para ver si la URL 'normal' está en alguna parte) o convertirla a la URL 'normal'. de cualquier manera.

Y sé que puedo obtener la lista de calendarios de esta manera:

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

Sin embargo, no puedo encontrar ninguna manera de saber cuál de esas entradas coincide con el calendario predeterminado.

O cualquier otra forma de obtener esa url normal para el calendario predeterminado.

Respuesta

3

probablemente no es el mejor método, pero yo uso esto y funciona:

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) 

sólo tiene que utilizar calendarIndex = 0 para el calendario predeterminado. ¡No debería ser demasiado difícil de convertir a C#!

+0

vi también que el calendario predeterminado era el índice 0 en las búsquedas, pero no encuentro ninguna referencia a esto en cualquier lugar. Entonces, ¿supongo que mañana, Google podría cambiar su opinión y ponerlo en último lugar (por ejemplo, por motivos de rendimiento)? – Legolas

2

Muchas gracias! Eso funciona perfectamente! Aquí está mi código 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++; 
     } 
Cuestiones relacionadas