邀请用户参加活动

创建事件

如果您对活动组织者的 Google 日历拥有写入权限,则可以使用 Events: insert 方法添加活动。

此方法可将活动直接添加到组织者的日历中,而无需考虑组织者是否设置了添加邀请。

添加参加者

使用此方法,您还可以通过将参与者的电子邮件地址添加到活动的 attendees 属性中,将参与者添加到同一活动。组织者对活动所做的任何未来更改都会传播给参加者。

参会者会收到组织者电子邮件地址发来的邀请。Google 日历用户会在电子邮件和/或日历中收到邀请,具体取决于其 Google 日历设置中的活动设置:

  • 如果他们选择的是 From everyone 设置,活动会直接添加到他们的日历中
  • 如果他们选择的是 Only if the sender is known 设置,则当他们之前与组织者互动过、组织者与他们位于同一组织中,或者组织者位于他们的 Google 通讯录中时,系统会将活动直接添加到他们的日历中。如果邀请对象不认识活动组织者,则可以在邀请电子邮件中点击添加到日历或点击不确定进行回复。然后,活动会添加到他们的日历中。
  • 如果用户启用了 When I respond in email 设置,则系统不会将所有邀请都添加到用户的日历中,除非用户在邀请电子邮件中点击不确定进行回复。

如需详细了解如何将邀请添加到 Google 日历,请参阅在日历中管理邀请

直接在参加者的日历中显示活动

如需在 Google 日历中直接向参会者显示活动,无论参会者可能采用何种设置,您都可以设置参会者的回复,或者直接在参会者的日历中导入活动的副本。 对于这两种方法,您都需要对参会者的日历拥有写入权限;如果没有,请考虑将组织者添加到参会者的联系人中,这可能需要对参会者的联系人拥有写入权限。

设置参会者的回复

如需为活动设置参加者的 RSVP,请按以下步骤操作:

  1. 在 Google 日历组织者的日历中创建活动,并添加参会者(见上文)。
  2. 使用 Events: update 方法将参会者的 RSVP 设置为 acceptedtentative。您必须拥有对参会者日历的写入权限。活动可能需要过一段时间才会显示在参会者的日历中。 详细了解如何使用 Events: update 方法

此方法会将活动添加到参会者的日历中,但参会者可能仍会在电子邮件中看到横幅,提示邀请是从他们之前不认识的地址发送的。

直接在参加者的日历中导入活动副本

如需将活动的副本导入到参会者的日历中,请按以下步骤操作:

  1. 如果您对活动组织者的 Google 日历拥有写入权限,请使用 Events: import 方法导入活动副本。
  2. 使用 Events: import 在参会者的日历中导入同一活动的其他副本。 您必须拥有对相应出席者日历的写入权限。为组织者和参会者的副本使用相同的活动 ID (iCalUID),并确保在参会者的副本中指定组织者。

使用此方法,受邀者可以在其日历中看到相应活动,但不会收到 Google 日历发送的邀请电子邮件。

将组织者添加到参会者的联系人中

如果您没有参会者的凭据,可以指示参会者或其组织提前将组织者的电子邮件地址添加到其 Google 通讯录中,以便直接在其日历中显示活动。新创建的联系人可能需要过一段时间才能生效。

  • 让 Google 日历用户将组织者添加到其 Google 通讯录
  • 如果参会者属于某个组织,您可以让该组织的管理员以编程方式将电子邮件地址添加到其用户的联系人中。请管理员启用网域范围的委托,模拟用户并使用 People: createContact 方法为每位用户创建联系人,以确保日后来自这些电子邮件地址的邀请会自动显示在用户的日历中。
  • 如果您有权访问参会者的联系人,还可以使用 People: createContact 方法将组织者的电子邮件地址添加到参会者的联系人中。

通过电子邮件地址邀请用户

如果您没有组织者的 Google 日历的写入权限,或者不想公开组织者的电子邮件地址,请使用 iCalendar 协议 (RFC-5545) 通过 .ICS 文件邀请电子邮件用户。

如果受邀者是 Google 日历用户,且其设置处于 Only if the sender is known 状态,并且之前未与您互动过或未将您的地址记录为已知地址,则在受邀者点击添加到日历或回复活动邀请之前,系统不会将邀请添加到其日历中。

或者,如果您想让 Google 日历用户更轻松地添加一次性活动,而无需保持活动更新,您可以提供一个预先填充了活动的链接,供用户自行添加。此方法会在用户日历中创建一个单独的活动,除非您有权访问用户日历,否则无法更新该活动。

使用以下链接模板:


https://calendar.google.com/calendar/r/eventedit?action=TEMPLATE&dates=20230325T224500Z%2F20230326T001500Z&stz=Europe/Brussels&etz=Europe/Brussels&details=EVENT_DESCRIPTION_HERE&location=EVENT_LOCATION_HERE&text=EVENT_TITLE_HERE

更新以下信息:

  • 开始日期和时间以及结束日期和时间:请使用 ISO 8601 格式。在上面的示例中,替换 20230325T224500Z20230326T001500Z
  • 开始时区和结束时区:采用 IANA 时区数据库名称格式。 将时区放置在 stzetz 字段中。
  • 活动说明:必须经过网址编码。
  • 活动地点:必须采用网址编码。
  • 活动标题:必须采用网址编码。

示例

我们以构建预约服务为例,说明如何帮助用户向商家预约。当用户预约后,您希望自己的服务在预约者和商家的 Google 日历中添加活动。

为获得最佳用户体验,我们建议商家授予其日历写入权限,以便您直接将活动添加到商家的日历中(创建活动),并邀请预订者参加该活动(添加参加者)。为确保预订者在日历中看到活动并收到活动提醒,请告知他们在预订后立即查看电子邮件,并回复以确认参加活动。他们回复活动后,系统会根据其通知设置向他们发送 Google 日历活动通知

如果您想将活动直接添加到预订者的日历中,请告知预订者将他们会收到邀请的电子邮件地址添加到其通讯录。或者,请求预订者授予其日历的写入权限,以便代表他们以编程方式回复 (Set the attendee's RSVP),并向他们发送有关已确认预订的电子邮件通知。

如果商家不想公开其电子邮件地址,请使用特定于用户的电子邮件地址,通过电子邮件将活动发送给预订者(通过电子邮件地址邀请用户)。

事件传播

下图说明了这种动态。首先,Jack 在自己的主日历中创建了一项活动(因此拥有组织者副本)。然后,他邀请了“大提琴课”群组次要日历和 Susan(她的活动设置是 Only if the sender is known)。系统会在“大提琴课程”群组辅助日历中创建参与者的副本,如果 Susan 认识 Jack,则会在 Susan 的日历中创建副本;否则,会在 Susan 回复“参加”或表明认识 Jack 时创建副本。当 Susan 回复时,系统会将 RSVP 更改传播回活动组织者,并根据 Susan 的回复更新组织者的副本。对组织者活动副本所做的这些更改随后会传播给其他参加者。

显示活动/参会者动态的图表

共享事件属性

创建活动的日历是组织者日历。此日历拥有共享活动信息,包括 ID、开始和结束时间、摘要和说明。当组织者日历中的相应信息更新后,更改会传播到参会者的日历中。

非公开活动属性

并非所有信息都会在所有活动副本之间共享。某些属性是私有的,例如提醒、colorId、透明度或 extendedProperties.private 属性。这些属性由参会者的设置控制,而不是由组织者的日历控制。

参加者还可以更改活动的共享属性。不过,这些更改只会反映在他们自己的副本中,如果组织者进行更改,这些更改可能会丢失。

从参加者传播回组织者的唯一活动更改是参加者的回复状态,该状态存储在 attendees[].responseStatus 属性中。