2010-02-19 27 views
5

Tôi đang cố gắng nhận url 'bình thường' cho nguồn cấp dữ liệu lịch mặc định của người dùng (ví dụ: http://www.google.com/calendar/feeds/[email protected]/private/full). Tôi muốn sử dụng phần [email protected] của URL làm ID duy nhất cho lịch đó.API Lịch Google: Cách nhận Lịch Calendar cho Lịch mặc định?

Tôi biết tôi có thể làm những việc với lịch mặc định bằng URL http://www.google.com/calendar/feeds/default/private/full. Tuy nhiên, tôi không thể tìm cách xây dựng một CalendarEntry từ URL đó (sau đó tôi có thể thử SelfUri và một số thuộc tính khác để xem url 'bình thường' có ở đâu đó) hay chuyển đổi nó thành url 'bình thường' bằng mọi cách.

Và tôi biết tôi có thể lấy danh sách các Calendars như thế này:

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

Tuy nhiên, tôi không thể tìm thấy bất cứ cách nào để biết được những mục phù hợp với lịch mặc định.

Hoặc bất kỳ cách nào khác để nhận được url thông thường đó cho lịch mặc định.

Trả lời

3

Đó là lẽ không phải là phương pháp tốt nhất, nhưng tôi sử dụng này và nó hoạt động:

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) 

Chỉ cần sử dụng calendarIndex = 0 cho lịch mặc định. Không nên quá khó để chuyển đổi thành C#!

+0

tôi thấy quá rằng lịch mặc định là chỉ số 0 trong tìm kiếm của tôi, nhưng tôi thấy không có tham chiếu đến bất cứ nơi nào này. Vì vậy, tôi đoán rằng ngày mai, google có thể thay đổi tâm trí của nó và đặt nó cuối cùng (ví dụ: vì lý do hiệu suất)? – Legolas

2

Cảm ơn bạn rất nhiều! Điều đó hoạt động hoàn hảo! Đây là mã cuối cùng của tôi:


 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++; 
     } 
Các vấn đề liên quan