Google Calendar API:如何为默认日历获取CalendarEntry?

时间:2010-02-19 19:57:43

标签: c# calendar google-calendar-api

我正在尝试获取用户默认日历Feed的“正常”网址(例如http://www.google.com/calendar/feeds/jo@gmail.com/private/full)。我想使用URL的jo@gmail.com部分作为该日历的唯一ID。

我知道我可以使用网址http://www.google.com/calendar/feeds/default/private/full对默认日历执行操作。但是,我找不到从该URL构建CalendarEntry的方法(然后我可以尝试使用SelfUri和其他一些属性来查看'普通'url是否在某处),或者将其转换为'normal'url无论如何。

我知道我可以像这样得到日历列表:

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

但是,我找不到任何方法可以知道哪些条目与默认日历相匹配。

或者以任何其他方式获取默认日历的正常网址。

2 个答案:

答案 0 :(得分:3)

这可能不是最好的方法,但我使用它并且它有效:

    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)

只需使用calendarIndex = 0作为默认日历。不应该太难转换为C#!

答案 1 :(得分:2)

非常感谢你!这很完美!这是我的最终代码:


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