我使用 Events.get 方法获取用户事件。然而,每当我尝试提供我想要的所选
fields
时,它都会返回一个错误,指出 Invalid field selection creator(displayName,email)
。 无论我列出哪些字段,我都会遇到类似的错误。
我做错了什么?
这是我的Python代码:-
request = calendar_service.events().list(calendarId=calendar_id,
syncToken=sync_token,
fields='creator(displayName,email)')
以前的这些答案不再准确。 fields 参数现已详细记录在此处:https://developers.google.com/calendar/performance#partial-response。从该页面:
字段请求参数值的格式松散地基于 XPath 语法。下面总结了支持的语法,并在下一节中提供了其他示例。
使用a/b选择嵌套在字段a内的字段b;使用 a/b/c 选择嵌套在 b 中的字段 c。
Exception:对于使用“数据”包装器的 API 响应,其中响应嵌套在看起来像 data: { ... } 的数据对象中,请勿在字段规范中包含“数据”。包含具有字段规范(如 data/a/b)的数据对象会导致错误。相反,只需使用像 a/b 这样的字段规范。
使用子选择器通过将表达式放在括号“( )”中来请求数组或对象的一组特定子字段。
例如: fields=items(id,author/email) 仅返回 items 数组中每个元素的项目 ID 和作者的电子邮件。您还可以指定单个子字段,其中 fields=items(id) 相当于 fields=items/id。
如果需要,在字段选择中使用通配符。例如: fields=items/pagemap/* 选择页面图中的所有对象。
fields
查询参数已记录在此处。
示例查询:
https://www.googleapis.com/calendar/v3/calendars/<calendarId>/events/<eventId>?fields=creator,attendees(email)
根据文档,“fields”参数不存在。请求的响应包含作为字典对象的所有信息。
因此,如果您致电:
request = calendar_service.events().list(calendarId=calendar_id,
syncToken=sync_token)
请求包含您需要的一切。您可以通过以下方式获取显示名称:
request['creator']['displayName']
我今天遇到了这个。如果有人仍在寻找解决方案:
request = calendar_service.events().list(calendarId=calendar_id,
syncToken=sync_token,
fields='items(creator(displayName,email))')
顶层有一个隐式的
items
属性,因此 items(…)
。