google 日历 api 没有添加事件也没有抛出错误
google calendar api not adding event and not throwing an error
我正在尝试按照 google 添加事件的示例进行操作,最初它会抛出错误,因为我的格式有误,但现在它说正在创建事件并将我链接到它,但它永远不会实际上使事件。我附上的第 3 张图片是结果,它有一个小弹出窗口,提示添加事件时出错,奇怪的是我的 none 事件全部显示在日历上,即使我登录的是同一个帐户在这两种情况下,只有一个日历。该事件从未添加到我的日历我已经尝试 运行 多次,即使在事件中使用不同的数据和相同的结果,它说它添加它但从未这样做。我失去了任何帮助,非常感谢如果您需要,请随时询问更多信息!
编辑:
这是我的事件创建函数
def createEvent(summary, start_time, end_time, *args, description='', location='', timeZone='America/New_York'):
credentials = get_credentials()
service = discovery.build('calendar', 'v3', credentials=credentials)
event = {
'summary': summary,
'location': location,
'description': description,
'start': {
'dateTime': start_time,
'timeZone': timeZone,
},
'end': {
'dateTime': end_time,
'timeZone': timeZone,
},
'reminders': {
'useDefault': False,
'overrides': [
# {'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10},
],
},
}
for arg in args:
event[arg[0]] = arg[1]
event = service.events().insert(calendarId='primary', body=event).execute()
print ('Event created: %s' % (event.get('htmlLink')))
编辑 2:
这是使用传入的信息示例调用函数的方式
googEvent = ['CSC 385 hw', '20-1-31T22:59:59', '20-1-31T23:59:59', 'EC Mylavarapu']
createEvent(googEvent[0], googEvent[1], googEvent[2], description=googEvent[3])
在研究了您的代码后,我发现您已经快要修复它了。你只需要强制日期格式为ISO 8601。为此,我使用了以下 Python 方法:
import datetime
…
googEvent = ['CSC 385 hw', datetime.datetime.strptime("31/01/2020 22:59:59",
"%d/%m/%Y %H:%M:%S").isoformat(), datetime.datetime.strptime(
"31/01/2020 23:59:59", "%d/%m/%Y %H:%M:%S").isoformat(), 'EC Mylavarapu']
createEvent(googEvent[0], googEvent[1], googEvent[2], description = googEvent[3])
这只是一种方法。每个日期首先使用 strptime()
and later converted into ISO 8601 with isoformat()
从人类可读的字符串创建。如果您需要进一步的帮助,请回复我。
我正在尝试按照 google 添加事件的示例进行操作,最初它会抛出错误,因为我的格式有误,但现在它说正在创建事件并将我链接到它,但它永远不会实际上使事件。我附上的第 3 张图片是结果,它有一个小弹出窗口,提示添加事件时出错,奇怪的是我的 none 事件全部显示在日历上,即使我登录的是同一个帐户在这两种情况下,只有一个日历。该事件从未添加到我的日历我已经尝试 运行 多次,即使在事件中使用不同的数据和相同的结果,它说它添加它但从未这样做。我失去了任何帮助,非常感谢如果您需要,请随时询问更多信息!
编辑: 这是我的事件创建函数
def createEvent(summary, start_time, end_time, *args, description='', location='', timeZone='America/New_York'):
credentials = get_credentials()
service = discovery.build('calendar', 'v3', credentials=credentials)
event = {
'summary': summary,
'location': location,
'description': description,
'start': {
'dateTime': start_time,
'timeZone': timeZone,
},
'end': {
'dateTime': end_time,
'timeZone': timeZone,
},
'reminders': {
'useDefault': False,
'overrides': [
# {'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10},
],
},
}
for arg in args:
event[arg[0]] = arg[1]
event = service.events().insert(calendarId='primary', body=event).execute()
print ('Event created: %s' % (event.get('htmlLink')))
编辑 2: 这是使用传入的信息示例调用函数的方式
googEvent = ['CSC 385 hw', '20-1-31T22:59:59', '20-1-31T23:59:59', 'EC Mylavarapu']
createEvent(googEvent[0], googEvent[1], googEvent[2], description=googEvent[3])
在研究了您的代码后,我发现您已经快要修复它了。你只需要强制日期格式为ISO 8601。为此,我使用了以下 Python 方法:
import datetime
…
googEvent = ['CSC 385 hw', datetime.datetime.strptime("31/01/2020 22:59:59",
"%d/%m/%Y %H:%M:%S").isoformat(), datetime.datetime.strptime(
"31/01/2020 23:59:59", "%d/%m/%Y %H:%M:%S").isoformat(), 'EC Mylavarapu']
createEvent(googEvent[0], googEvent[1], googEvent[2], description = googEvent[3])
这只是一种方法。每个日期首先使用 strptime()
and later converted into ISO 8601 with isoformat()
从人类可读的字符串创建。如果您需要进一步的帮助,请回复我。