1. 登録
container = "/calendar/feeds/%s/private/full" % cal_id
GDATA_DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S.000Z"
new_evt = gdata.calendar.CalendarEventEntry()
new_evt.title = atom.Title(text=cal["summary"])
new_evt.content = atom.Content(text=cal["description"])
new_evt.where.append(gdata.calendar.Where(value_string=cal["location"]))
new_evt.uid = gdata.calendar.UID(value=cal["uid"])
dts = cal["dtstart"]
dte = cal["dtend"]
# TimeZoneをごにょごにょしてdtstartとdtendをGMTでセット
start_time = dtstart.strftime(GDATA_DATETIME_FORMAT)
end_time = dtend.strftime(GDATA_DATETIME_FORMAT)
new_evt.when.append(
gdata.calendar.When(
start_time = start_time,
end_time = end_time))
evt = self.client.InsertEvent(new_evt, container)
containerのcal_idでどのカレンダーにイベントを登録するか指定できます。defaultにしとけば、デフォルトのカレンダーに登録されます。あとは、うーん、あんまり面白くないです。
startとendのフォーマット指定がよくわかりません。なにも考えないとGMTになります。フォーマットの000Zのところをいじくれば、ローカルタイムになってくれそうな気もしますが、自前でGMTに変換する方が楽だったのでGMTで指定しています。
で、uidですが、ドキュメントには、
Indicates the globally unique identifier (UID) of the event as defined in Section 4.8.4.7 of RFC 2445.
Must be a globally unique string and must follow specifications in Section 4.8.4.7 of RFC 2445.
とあります。多分、外部のツールが識別用に与えてもいいものだと信じて使っています。
2. 更新
InsertEventがUpdateEvent(event.GetEditLink().href, event)になるだけです。eventは検索したりして取得したイベントのオブジェクトです。それだけです。
あとは、処理をするときに緑色のスレッドを複数動かして並立すれば、とりあえずの目標は達成だな。次はexchangeだ。
0 コメント:
コメントを投稿