邀请用户参加活动

创建事件

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

此方法会单独将活动添加到组织者的日历中 添加邀请

添加参加者

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

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

  • 如果用户设置了 From everyone,该事件会直接添加到 他们的日历
  • 如果用户设置了 Only if the sender is known,则系统会添加该事件 直接将他们转到自己的日历中 如果组织者属于同一组织,或者 在其 Google 通讯录中。如果组织者 不知道对方,他们可以点击我认识此发件人或通过 点击邀请电子邮件中的不确定。那么事件 添加到他们的日历中。
  • 如果用户设置了“When I respond in email”,则系统不会收到所有邀请 添加到自己的日历中,直到用户通过点击不确定回复用户。 或 No(否)。

有关如何向 Google 日历添加邀请的更多信息,请参阅 在 Google 日历中管理邀请

请勿使用 attendees[].responseStatus 属性设置为 needsAction 以外的任何值。预填充参加者的 回复不会自动将事件添加到用户的日历。

直接在参加者的日历

直接在 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 日历的写入权限,或者 如果您不想显示组织者的电子邮件地址,请使用 协议 (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 在 他的主日历(因此拥有组织者副本)。然后,他邀请 大提琴课程小组辅助日历,以及设置活动设置的 Susan Only if the sender is known。参加者“大提琴”课程 群组辅助日历,如果 Susan 认识 Jack,则会在日历上记录;否则 当她回复或表示自己认识小杰时。苏珊回复后,回复会随之更改 将组织者的复制操作传回给组织者 Susan 的回答。这些更改随后会对组织者的活动副本进行, 从而将信息传播到其他参加者

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

共享事件属性

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

私人活动属性

并非所有活动副本都会共享部分信息。部分房源 私密信息,如提醒、colorId、透明度或 extendedProperties.private 属性。这些属性由 而不受组织者日历的影响。

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

唯一会从参加者回传到组织者的活动更改是 此状态会存储在 attendees[].responseStatus 属性。