如何使用javascript以编程方式订阅用户到谷歌日历?

时间:2011-04-04 05:05:29

标签: javascript google-calendar-api subscribe

嘿,我能够使用谷歌日历的JavaScript API对用户进行身份验证和授权。我接下来要做的是将用户订阅到公共日历。我以为我可以用日历的id来调用google.gdata.calendar.CalendarEntry构造函数,但这不起作用

var entry = google.gdata.calendar.CalendarEntry("idOfCalendar");

我还尝试使用google.gdata.atom.Id(“idOfCalendar”)创建条目ID的实例;并将其添加到CalendarEntry构造函数中。使用set方法也不起作用。

我使用InsertEntry方法添加条目,但是我收到以下错误

  

错误:必须提供有效的日历ID,才能在所有级别投影中将日历添加到收藏夹列表。

我可以使用google.gdata.calendar.CalendarEventQuery()

访问此日历的事件

javascript的google api并没有提供很多例子,任何人都知道我的问题的答案或使用谷歌日历api的好资源?你认为我应该使用php或jason吗?

**编辑 我在Java Api link中找到了一个我想要的例子,所以我尝试了

function addSubscriptionToCalendar() {
    var feedUri = "http://www.google.com/calendar/feeds/default/allcalendars/full";
    var calendarEntry = new google.gdata.calendar.CalendarEntry();
    calendarEntry.setId("nhl_21_%54oronto+%4daple+%4ceafs#sports@group.v.calendar.google.com");
    calendarService.insertEntry(feedUri, calendarEntry, function(){alert("calendar added")}, handleError);
}

但我得到了同样的错误

3 个答案:

答案 0 :(得分:2)

您应该使用 owncalendars Feed为经过身份验证的用户修改/添加日历条目,而不是 allcalendars

答案 1 :(得分:1)

听起来您的日历ID无效。第二个示例中的ID似乎是URL编码的。尝试使用解码值:

nhl_21_Toronto Maple Leafs#sports@group.v.calendar.google.com

答案 2 :(得分:0)