邀請使用者參加活動

建立事件

如果您擁有主辦者 Google 日曆的寫入權限,就可以用 Events: insert 方法新增活動。

這個方法會將活動直接新增至發起人的日曆,不受其新增邀請的設定影響。

新增與會者

透過這個方法,您也可以在事件的 attendees 屬性中加入邀請對象的電子郵件地址,藉此將參與者新增到同一活動。發起人日後對活動做出的任何變更,都會傳播給參與者。

參與者會透過發起人的電子郵件地址收到邀請。視 Google 日曆設定中的活動設定而定,Google 日曆使用者會在電子郵件和/或日曆中收到邀請:

  • 如果對方設為 From everyone,活動就會直接新增至他們的日曆
  • 如果他們設為 Only if the sender is known 設定,如果活動發起人先前曾與主辦人互動、發起人是相同機構,或者主辦人是其 Google 聯絡人,那麼系統會將活動直接新增至他們的日曆。如果發起人不明,可以點選「我認識這位寄件者」,或按一下邀請電子郵件中的「是」或「不確定」來回覆邀請。然後該活動就會加入他們的日曆
  • 如果使用者為 When I respond in email 設定,在使用者回覆邀請電子郵件中的「是」、「不確定」或「否」來回覆邀請之前,所有邀請都不會新增至他們的日曆。

如要進一步瞭解將邀請新增至 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 日曆的寫入權限,或不想公開主辦者的電子郵件地址,請使用 icalendar 通訊協定 (RFC-5545),透過 .ICS 檔案邀請使用者傳送電子郵件。

如果參與者是擁有 Only if the sender is known 設定的 Google 日曆使用者,而且從未互動或記錄已知的地址,則要等到對方點選「我知道這位寄件者」或回覆活動邀請後,才會將邀請新增至他們的日曆。

或者,如果您想讓 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 在自己的主要日曆中建立活動,因此擁有主辦者副本。然後,他邀請大會課程的次要日曆及小桑邀請擁有 Only if the sender is known 活動。參與者的複本會在 Cello 課程的次要日曆上建立,如果她知道 Jack,則在 Susan 的日曆上建立,否則當她回覆邀請或指出她知道小傑時。Susan 做出回應後,RSVP (敬請回覆) 變更會套用回發起人,並且根據蘇珊的回應來更新發起人副本。這些變更在主辦者的活動副本上變更後,就會套用到其他參與者。

顯示活動/參與者動態的圖表

共用事件屬性

主辦人日曆是建立活動的日曆。這個日曆擁有共用的活動資訊,包括 ID、開始和結束時間、摘要和說明。如果主辦者日曆上的這項資訊更新,這些變更就會套用到參與者副本。

私人活動屬性

並非所有活動副本都會分享所有資訊。有些屬性屬於私人屬性,例如提醒、colorId、資訊公開或 extendedProperties.private 屬性。這些屬性是由參與者的設定控管,而非發起人日曆。

此外,參與者也可以變更活動的共用屬性。不過,這些變更只會反映在自己的副本上,如果主辦者做出變更,這些變更就可能遺失。

只有參與者的回應狀態是儲存在 attendees[].responseStatus 屬性中,這項事件變更是從參與者傳播回主辦者。