Google Calendar APIでカレンダーに予定を書き込む
gdataライブラリをダウンロードしてきます。
インストールしなくても以下のディレクトリが見えていれば実行できます。
- gdata/
- atom/
カレンダーに予定を書き込んで、予定の一覧を表示するコードです。
import gdata.calendar.service import gdata.service import atom.service import gdata.calendar import getopt, sys, string, time, atom calendar_service = gdata.calendar.service.CalendarService() calendar_service.email = '********' calendar_service.password = '********' calendar_service.source = 'Example-Example-1' calendar_service.ProgrammaticLogin() feedURI = 'http://www.google.com/calendar/feeds/********/private/full' event = gdata.calendar.CalendarEventEntry() event.title = atom.Title(text = 'Test Schedule') event.content = atom.Content(text = 'hogehoge') event.where.append(gdata.calendar.Where(value_string = 'Roppongi')) event.when.append(gdata.calendar.When( start_time = '2009-01-07T21:34:00.000+09:00', end_time = '2009-01-07T22:34:00.000+09:00' )) new_event = calendar_service.InsertEvent(event, feedURI) print 'URI: %s' % (new_event.id.text) print feed = calendar_service.GetCalendarEventFeed(feedURI) print 'Name: %s' % (feed.title.text) print 'URI: %s' % (feed.id.text) for an_event in feed.entry: print "%s\t%s\t%s" %( an_event.when[0].start_time, an_event.when[0].end_time, an_event.title.text )
予定を書き込むときは、カレンダーURIの形式に注意する必要があるようです。カレンダー設定のXMLリンクを使用するとエラー*1になるため、自分でURIを組み立てます。以下の********をカレンダーIDに置き換えればOKです。
これは色々と使えそうですね!
*1:gdata.service.RequestError: {'status': 403, 'body': 'This feed is read-only', 'reason': 'Forbidden'}