Google Calendar API:插入多个事件(在Python中)

时间:2017-05-31 17:14:43

标签: python google-calendar-api

我正在使用Google Calendar API,并成功设法将单个事件插入授权的主日历中,但我想硬编码多个事件,这些事件在执行时会填充用户日历。

例如:

  • 6月24日下午1:00“买苹果”
  • 6月26日下午3:00“拿起衣服”
  • 8月21日下午1:00“清洁汽车”
  • 9月1日下午2:00“归还书籍”

我的代码现在是:

{{1}}

我需要知道如何将剩余事件作为示例同时添加到日历中。 一个Google日历活动中的多个非重复活动插入

1 个答案:

答案 0 :(得分:0)

不幸的是,事件一次只能执行一个事件,这意味着必须多次调用events.insert()方法。要对需要召回的几个事件进行硬编码

    e = CAL.events().insert(calendarId='primary',
                    sendNotifications=True, body=EVENT).execute()

使用不同的“body”参数集。

from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

try:
    import argparse
    flags = argparse.ArgumentParser(parents=
[tools.argparser]).parse_args()
except ImportError:
    flags = None

SCOPES = 'https://www.googleapis.com/auth/calendar'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json',
SCOPES)
    creds = tools.run_flow(flow, store, flags) \
          if flags else tools.run(flow, store)
CAL = build('calendar', 'v3', http=creds.authorize(Http()))

GMT_OFF = '-04:00'          # ET/MST/GMT-4
EVENT1 = {
    'summary': 'Buy apples',
    'start': {'dateTime': '2017-06-24T13:00:00%s' % GMT_OFF},
    'end': {'dateTime': '2017-06-24T14:00:00%s' % GMT_OFF},
}
EVENT2 = {
    'summary': 'Buy Bannanas',
    'start': {'dateTime': '2017-06-25T13:00:00%s' % GMT_OFF},
    'end': {'dateTime': '2017-06-25T14:00:00%s' % GMT_OFF},
}
EVENT3 = {
    'summary': 'Buy candy',
    'start': {'dateTime': '2017-06-26T13:00:00%s' % GMT_OFF},
    'end': {'dateTime': '2017-06-26T14:00:00%s' % GMT_OFF},
}

e = CAL.events().insert(calendarId='primary',
                sendNotifications=True, body=EVENT1).execute()
e = CAL.events().insert(calendarId='primary',
                sendNotifications=True, body=EVENT2).execute()
e = CAL.events().insert(calendarId='primary',
                sendNotifications=True, body=EVENT3).execute()

Google日历“body”参数专门接受单个事件,并会在传入的事件数组中抛出400 HTTP错误