邀请用户参加活动

创建活动

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

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

添加参加者

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

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

  • 如果他们设置了“来自所有人”From everyone,则活动会直接添加到他们的日历中
  • 如果他们设置了Only if the sender is known,则如果他们之前与组织者互动过、组织者与他们属于同一组织,或者组织者是他们的Google 联系人,则活动会 直接添加到他们的日历中。如果他们不认识组织者,则可以点击邀请邮件中的添加到日历 或点击不确定 进行回复。然后,活动就会添加到他们的日历中。
  • 如果用户设置了When I respond in email,则在用户点击邮件邀请中的不确定进行回复之前,所有邀请都不会添加到他们的日历中。

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

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

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

设置参加者的回复

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

  1. 在 Google 日历组织者的日历中创建活动并添加 参加者(见上文)。
  2. 使用 Events: update 方法 将 参加者的回复 设置为 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 日历会根据其通知设置向他们发送活动通知。

如果您想将活动直接添加到预订者的日历中,请告知预订者 将他们将收到邀请的电子邮件地址 添加到其联系人。或者, 要求预订者授予对其日历的写入权限,以便您代表他们以编程方式回复 (设置参加者的回复),并向他们发送有关已确认预订的电子邮件 通知。

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

活动传播

下图说明了相关动态。首先,Jack 在其主日历中创建活动(因此拥有组织者副本)。然后,他邀请了 Cello 课程群组辅助日历和 Susan,Susan 的活动设置为“仅限来自已知发件人的邀请”Only if the sender is known。参加者的副本会在 Cello 课程群组辅助日历中创建,如果 Susan 认识 Jack,则也会在 Susan 的日历中创建;否则,当 Susan 回复或表明她认识 Jack 时,副本才会创建。当 Susan 回复时,回复更改会传播回组织者,并使用 Susan 的回复更新组织者的副本。然后,对组织者的活动副本所做的这些更改会传播给其他参加者。

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

共享活动属性

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

私有活动属性

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

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

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