2010-02-19 17 views
5

Bir kullanıcı varsayılan takvim özet akışı için 'normal' URL'yi almaya çalışıyorum (ör. http://www.google.com/calendar/feeds/[email protected]/private/full). URL'nin [email protected] bölümünü o takvim için benzersiz bir kimlik olarak kullanmak istiyorum.Google Calendar API: Varsayılan Takvim için bir CalendarEntry nasıl edinilir?

http://www.google.com/calendar/feeds/default/private/full URL'sini kullanarak varsayılan takvim ile şeyler yapabileceğimi biliyorum. Ancak, bu URL'den bir CalendarEntry oluşturmanın bir yolunu bulamıyorum (daha sonra SelfUri'yi ve 'normal' url'nin bir yerde olup olmadığını görmek için diğer bazı özellikleri deneyebilirim veya 'normal' url'ye dönüştürebilirim) her şekilde.

Ve ben böyle Takvimleri listesini alabilirsiniz biliyorum:

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

Ancak, varsayılan takvimi ile eşleşen bu girişlerin hangi bilmek herhangi bir şekilde bulamıyor. Veya varsayılan takvim için bu normal URL'yi almanın başka bir yolu.

cevap

3

Muhtemelen en iyi yöntem değil, ama bunu kullanmaktan ve çalışır:

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) 

Sadece varsayılan takvim için calendarIndex = 0 kullanın. C# dönüştürmek için çok zor olmamalı!

+0

varsayılan kalender Aramalarımla dizin 0 olduğunu da gördüm, ama bu her yerde bulunmamasının. Öyleyse yarın, google fikrini değiştirebilir ve en sonunda başlatabilir (örneğin performans nedenleriyle)? – Legolas

2

Çok teşekkür ederim! Bu mükemmel çalışıyor! İşte benim son kodudur:


 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++; 
     } 
İlgili konular