UpdateCalendarEvent¶
更新现有的日历事件。
如果会议出现在用户的多个收件箱中,则每个收件箱对应一条 ListCalendarEvents 条目。在更改其详情、受邀者或受邀者权限之前,询问用户要更改哪个收件箱的副本,然后传入该副本的 inbox。绝不要自己替用户在这些收件箱之间做选择——无论它们看起来如何:测试地址、次要地址或不熟悉的地址仍然是用户自己的收件箱。仅在以下情况下跳过提问:用户已指定收件箱,或只有一个副本的 viewerCan 允许更改(使用它并说明原因),或向用户从某个收件箱组织的会议添加受邀者(从该副本添加并说明原因)。提醒可能发送到一个副本,而 rsvp 可能发送到用户作为受邀者的副本;在你的回复中应指明收件箱。如果没有 inbox,工具会拒绝操作,列出每个副本并给出需要询问的问题。一次调用只更改一个副本,因此在一个副本上编辑、在另一个副本上 rsvp 需要两次调用。
只有提供的字段会被更改;省略的字段保持其当前值。更改会立即写入日历提供商,并且参会者会收到通知,因此请先与用户确认详细信息。从 ListCalendarEvents 获取 eventId。
scope 决定重复系列中更改多少部分,并且始终必填:"this_event" 编辑单个发生项(传入来自 ListCalendarEvents 的该发生项的 recurrenceId),系列其余部分保持不变;"all" 编辑系列本身——配合 time 会移动每一次发生项,因此绝不要使用 "all" 来重新安排单个发生项。非重复事件使用 "all"。不存在“此事件及后续事件”的更新方式:应使用 DeleteCalendarEvent 的 "this_and_following" 结束系列,然后创建新事件。
传入 attendees 会替换完整的参会者列表——请包含所有应保留的人,而不仅仅是新增人员。当 ListCalendarEvents 中的 viewerCan.removeGuests 为 true 时,这一点成立(用户组织该事件,或组织者允许受邀者修改事件)。当它为 false 时,列表只能增加:传入当前参会者加上新增人员;新增人员会被邀请,而不会影响其他人,删除任何受邀者都会失败。此时添加受邀者需要 viewerCan.inviteGuests;否则说明组织者不允许受邀者邀请其他人,或隐藏了受邀者列表,或该事件是用户未组织的 Outlook 会议。description 或 location 为空字符串会清除相应内容。对于用户无法编辑的日历中的事件,此操作会失败。
没有修改权限的受邀者(viewerCan.editDetails 为 false 且 viewerCan.rsvp 为 true)只能更改自己的 reminders,在 viewerCan.inviteGuests 允许的情况下添加受邀者,并通过 rsvp 做出回复;更改标题、时间、说明、地点、重复规则或会议方式会失败,因为组织者不允许受邀者更改事件。
rsvp 设置用户自己对邀请的回复,并且与字段编辑相互独立——它可以是本次调用唯一更改的内容。它应用的 scope 与调用的其余部分相同,并且以该事件副本所属的已连接收件箱身份回复,因此仅当该收件箱是参会者时才有效。
参数¶
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
eventId |
string | 是 | 事件的 id,来自 ListCalendarEvents 或 CreateCalendarEvent。 |
calendarId |
string | 否 | 要更新的副本的 calendarId,来自其 ListCalendarEvents 条目的 copies,适用于从多个日历同步的事件。省略时更新事件的主副本。 |
inbox |
string | 否 | 本次调用所更改副本的 inbox,来自其 ListCalendarEvents 条目。当会议出现在用户的多个收件箱中且调用除了 reminders 或 rsvp 之外还更改其他内容时必填:没有它工具会拒绝操作并列出每个副本。它必须是 eventId 所指副本所在的收件箱。 |
scope |
"all" | "this_event" |
是 | 更新应用于重复系列的多少部分。 |
recurrenceId |
string | 否 | 目标发生项的 recurrenceId,来自其 ListCalendarEvents 条目。对于 "this_event" 必填;"all" 时省略。 |
title |
string | 否 | 替换标题。省略则保留当前标题。 |
description |
string | 否 | 替换事件正文/说明。空字符串会清除它;省略则保留当前内容。 |
location |
string | 否 | 替换地点标签。空字符串会清除它;省略则保留当前内容。 |
time |
EventTimeInput | 否 | 替换时间:kind 为 "timed" 的计时跨度(startsAt、endsAt、可选 timeZone),或 kind 为 "allDay" 的整天(startDate、排他的 endDate)。省略则保留当前时间。 |
attendees |
AttendeeInput[] | 否 | 替换参会者列表——替换所有当前参会者,因此请包含所有应保留的人。当 viewerCan.removeGuests 为 false 时,只能向当前列表添加人员。省略则对参会者不做更改。 |
recurrenceLines |
string[] | 否 | 替换 RFC 5545 重复规则行。空列表使事件成为一次性事件;省略则保留当前重复规则。仅对 scope "all" 有效。 |
conference |
"provider_default" | "microsoft_teams" | "google_meet" | "remove" |
否 | 更改事件的视频会议方式:"provider_default" 使用日历支持的提供商;"google_meet" 或 "microsoft_teams" 显式选择一种。"remove" 仅在受支持的位置解除会议。请先检查 ListCalendars 的功能。省略则保留当前会议方式。 |
reminders |
EventRemindersInput | 否 | 替换通知提醒。useDefault: true 遵循日历自身的默认设置;否则 overrides 用 method 为 "popup"(Macro 通知)或 "email" 且 minutes 为开始前分钟数的条目替换整个列表——空列表会使事件静音。省略则保留当前提醒。 |
rsvp |
"accepted" | "declined" | "tentative" |
否 | 设置用户自己对邀请的回复:"accepted"、"declined" 或 "tentative"。省略则保持其回复不变。 |
outOfOffice |
OutOfOfficeInput | 否 | 调整外出自动拒绝行为;仅对已经是外出状态的事件有效(其事件类型不能更改)。替换整个块:设置 autoDeclineMode("decline_none"、"decline_all" 或 "decline_new_only"),并可选择设置 declineMessage。省略则保持原样。 |
guestPolicy |
GuestPolicy | 否 | 替换访客可执行的操作:canModify(更改事件;隐含 canInviteOthers)、canInviteOthers 和 canSeeOtherGuests,三个都必须提供。只有 Google 事件的组织者可以设置它(viewerCan.setGuestPolicy),且仅限 "all" 范围:它属于整个系列。Outlook 事件没有此设置。省略则保持原样。 |
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 macro3/macro