GeekFactory

int128.hatenablog.com

Google Calendar APIでカレンダーに予定を書き込む

gdataライブラリをダウンロードしてきます。

インストールしなくても以下のディレクトリが見えていれば実行できます。

カレンダーに予定を書き込んで、予定の一覧を表示するコードです。

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です。

http://www.google.com/calendar/feeds/********/private/full

これは色々と使えそうですね!

*1:gdata.service.RequestError: {'status': 403, 'body': 'This feed is read-only', 'reason': 'Forbidden'}