如何使用Google Python API编辑副本日历
我想知道是否可以通过谷歌的API在副日历中创建和删除事件。我已经很清楚如何在主日历中做到这一点,所以我只是想问,如何更改calendar_service以便读取和写入其他日历。
我尝试用副日历的邮箱登录,但出现了BadAuthentication Error
错误,这样是无法登录的。URL肯定是正确的,因为API可以读取。
期待你的帮助。
2 个回答
我也遇到了同样的问题,不过我找到了解决办法(我不记得在哪儿看到的)
这个解决办法是从谷歌提供的链接中提取出次要日历用户的信息
这可能不是最好的方法,但它确实能用
注意:这段代码是从一个真实的项目中提取出来的[有些部分被删掉了],你需要根据自己的情况进行调整,这只是一个示例,帮助解释(直接用是行不通的)
# 1 - Connect using the main user email address in a classical way
cal_client = gdata.calendar.service.CalendarService()
# insert here after connection stuff
# 2 - For each existing calendars
feed = cal_client.GetAllCalendarsFeed():
# a loop the find the calendar by it's title (cal_title)
for a_calendar in feed.entry:
if cal_title in a_calendar.title.text:
cal_user = a_calendar.content.src.split('/')[5].replace('%40','@')
# If you print a_calendar.content.src.split you will see that the url
# contains an email like definition. This is the one to used to work
# with the calendar
然后你只需要在API中把默认用户替换成cal_user,这样就能操作次要日历了。
需要替换调用是因为谷歌的API函数在处理特殊字符时,比如'%',会进行内部转换
希望这能帮到你。
我在回答我自己的问题,这样我就可以接受这个问题了。这个问题早就解决了。
最重要的答案在这个文档里。
每个查询都可以用uri作为参数来运行。比如说“InsertEvent(event, uri)”。这个uri可以手动设置(从谷歌日历的设置里)或者自动生成,下面的帖子里有写。需要注意的是,CalendarEventQuery只需要用户名,而不是整个网址。
这两者的构造方式是这样的:
user = "abcd1234@group.calendar.google.com"
uri = "http://www.google.com/calendar/feeds/{{ user }}/private/full-noattendees"
有用的是,你可以用不同的uri来运行查询,并且在一个脚本里添加或删除多个不同日历的事件。
希望有人觉得这有帮助。