现在,我正在用 Python 编写一个程序,该程序可以从我的 Google 帐户中的所有日历中提取事件;但是,我正在尝试使该程序尽可能商业化。话虽如此,当我知道附加到我的日历的所有美国假期事件都是全天事件时,为自己自定义代码非常简单,因此我可以设置一个简单的 if 语句来检查它是否是假期日历并指定事件请求如下:
def get_main_events(pageToken=None):
events = gc_source.service.events().list(
calendarId=calendarId,
singleEvents=True,
maxResults=1000,
orderBy='startTime',
pageToken=pageToken,
).execute()
return events
因此,这适用于全天活动。之后,我会将结果附加到列表中并对其进行过滤以仅获取我想要的事件。现在从我的主日历中获取事件更容易指定我想要的事件,因为它们通常不是全天事件,只是我的工作时间表,所以我可以使用:
now = datetime.now()
now_plus_thirtydays = now + timedelta(days=30)
def get_main_events(pageToken=None):
events = gc_source.service.events().list(
calendarId=calendarId,
singleEvents=True,
maxResults=1000,
orderBy='startTime',
timeMin=now.strftime('%Y-%m-%dT%H:%M:%S-00:00'),
timeMax=now_plus_thirtydays.strftime('%Y-%m-%dT%H:%M:%S-00:00'),
pageToken=pageToken,
).execute()
return events
现在,我在使该程序可用于商业用途以及我自己时遇到的问题是,上述内容只会从我的主日历返回非全天事件。我想知道是否有一种方法——如果有,如何——运行获取事件请求并返回所有结果,无论它们是全天的还是只是发生在部分时间的定时事件天。此外,这个问题的一部分是在我打印需要使用的结果的代码的另一部分中:
print event['start']['date']
对于全天活动,并且:
print event['start']['dateTime']
对于非全天活动。
因此,由于“日期时间”不适用于全天活动,我想找到一种设置方法,以便我可以评估活动是否全天。即“如果所述事件是全天事件,则使用事件['start']['date'],否则使用事件['start']['dateTime']