如何解决Google Calendar API删除“ conferenceData”嵌套对象
编辑:这被标识为bug here。
我正在尝试与新的日历活动一起进行Google Meet。但是,由于某种原因,返回的事件不包括任何ConferenceData,甚至没有状态为失败的会议数据。
这是我的代码。我没有收到身份验证错误,因此省略了身份验证步骤。
def generateMeet(emails=None,fake=False):
if emails is None:
emails = []
if fake:
return "https://www.google.com",get_random_string(10)
now = datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
inonehour = (datetime.utcnow() + timedelta(hours=1)).isoformat() + 'Z'
event = {
'summary': 'Orb Meeting','start': {
'dateTime': now,'timeZone': 'America/New_York',},'end': {
'dateTime': inonehour,'sendUpdates': "none",'reminders': {
'useDefault': False,'attendees': [{'email': x} for x in emails],'conferenceDataVersion': 1,'conferenceData': {
'createRequest': {
'requestID': get_random_string(10),'conferenceSolutionKey': {
'type': 'hangoutsMeet'
},}
}
}
ret = service.events().insert(calendarId='primary',body=event).execute()
return ret['conferenceData']['entryPoints'],ret['id']
这将返回键错误,因为会议数据不存在。这是运行返回之前的完整“ ret”对象:
{'kind': 'calendar#event','etag': '"3197938620273000"','id': '5fb6epfe93sceba9scjt1nevsk','status': 'confirmed','htmlLink': 'https://www.google.com/calendar/event?eid=NWZiNmVwZmU5M3NjZWJhOXNjanQxbmV2c2sgZm9ycmVzdG1pbG5lckBt','created': '2020-09-01T14:08:30.000Z','updated': '2020-09-01T14:08:30.162Z','summary': 'Orb Meeting','creator': {'email': '[my email]','self': True},'organizer': {'email': '[my email]','start': {'dateTime': '2020-09-01T10:08:28-04:00','timeZone': 'America/New_York'},'end': {'dateTime': '2020-09-01T11:08:28-04:00','iCalUID': '5fb6epfe93sceba9scjt1nevsk@google.com','sequence': 0,'attendees': [{'email': '[my other email]','displayName': 'Forrest Milner','responseStatus': 'needsAction'}],'reminders': {'useDefault': False}}
谁能告诉我为什么我的请求的ConferenceData部分可能会被删除?我将ConferenceDataVersion设置为1,并使用随机字符串。
我尝试添加虚拟的“被邀请者”。在此试用版中,我邀请了我的第二个gmail帐户,在其他试用版中,我邀请了多个域为“ example.com”的虚拟帐户。这将更新与会者,但不会显示会议数据。
我也尝试等待几分钟,然后列出我的所有活动。即使在等待之后,会议数据也没有填写。当我在GUI(https://calendar.google.com/calendar/r)上检查日历时,它也没有附加Google Meet。
谢谢您的帮助。
解决方法
是的,这是一个错误,如果它具有较高的优先级,则可以使用以下方式“修补”您创建的事件:
const eventPatch = {
conferenceData: {
createRequest: { requestId: "yourRandomString" },},};
let response = await calendar.events.patch({
calendarId: 'primary',eventId: "createdEventID",resource: eventPatch,sendNotifications: true,conferenceDataVersion: 1,});
参考:https://developers.google.com/calendar/create-events#conferencing
, conferenceDataVersion
不再是requestBody的一部分。必须在您的insert方法内部传递。
在NodeJS上是这样的:
calendar.events.insert({
calendarId: 'calendarIdHere',requestBody: yourOldRequestBodyObject,conferenceDataVersion: 1
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。