予定にユーザーを招待する

イベントを作成する

主催者の Google カレンダーへの書き込みアクセス権がある場合は、Events: insert メソッドを使用して予定を追加できます。

この方法では、招待状を追加する設定に関係なく、主催者のカレンダーに予定が直接追加されます。

参加者を追加する

このメソッドを使用すると、予定の attendees プロパティにメールアドレスを追加して、同じ予定に参加者を追加することもできます。その後、主催者がイベントに対して行った変更は、参加者に伝播されます。

参加者には主催者のメールアドレスから招待状が届きます。Google カレンダー ユーザーは、Google カレンダーの設定にある予定の設定に応じて、メールやカレンダーで招待状を受け取ります。

  • From everyone に設定している場合、予定はそのユーザーのカレンダーに直接追加されます。
  • 設定 Only if the sender is known で、そのユーザーが以前に主催者とやり取りしたことがある場合、主催者が同じ組織に所属している場合、または主催者が Google コンタクトに登録されている場合は、予定はカレンダーに直接追加されます。主催者が不明な場合は、[この送信者を知っています] をクリックするか、招待メールの [はい] または [未定] をクリックして出欠確認を行うことができます。そうすることで、そのユーザーのカレンダーに予定が追加されます。
  • ユーザーの設定が When I respond in email の場合、ユーザーが招待メールで [はい]、[未定]、[いいえ] のいずれかをクリックして出欠を確認するまで、招待状はカレンダーに追加されません。

招待状を Google カレンダーに追加する方法について詳しくは、カレンダーで招待状を管理するをご覧ください。

attendees[].responseStatus プロパティを使用した参加者のレスポンスを needsAction 以外に設定しないでください。参加者の返答を事前に入力しても、ユーザーのカレンダーに予定が自動的に追加されることはありません。

参加者のカレンダーに予定を直接表示する

Google カレンダーの参加者のカレンダーに参加者の予定を直接表示するには、参加者の出欠確認を設定するか、参加者のカレンダーに予定のコピーを直接インポートします。どちらの方法でも、参加者のカレンダーへの書き込みアクセス権が必要です。そうでない場合は、参加者の連絡先に主催者を追加することを検討してください。これにより、参加者の連絡先への書き込みアクセス権が必要になる場合があります。

参加者の出欠確認を設定する

予定への参加者の出欠確認を設定する方法は次のとおりです。

  1. Google カレンダー主催者のカレンダーで予定を作成し、参加者を追加します(上記を参照)。
  2. Events: update メソッドを使用して、参加者の出欠確認accepted または tentative に設定します。参加者のカレンダーへの書き込みアクセス権がある必要があります。参加者のカレンダーに予定が表示されるまでに少し時間がかかることがあります。 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 カレンダーのユーザーが予定を更新せずに 1 回限りの予定として簡単に追加できるように、事前に入力された予定へのリンクをユーザーが追加できるようにすることも可能です。この方法では、ユーザーのカレンダーに個別の予定が作成されますが、ユーザーのカレンダーへのアクセス権がないと更新できません。

次のリンク テンプレートを使用します。


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 タイムゾーン データベース名の形式で指定します。タイムゾーンを stz フィールドと etz フィールドに入力します。
  • イベントの説明: URL エンコードする必要があります。
  • イベントの場所: URL エンコードする必要があります。
  • 予定のタイトル: URL エンコードする必要があります。

ユーザーが企業や店舗に予約を入れられるようにする予約サービスを構築する例について考えてみましょう。ユーザーが予定を予約したときに、予約者と企業の Google カレンダーに予定を追加したいとします。

最適なユーザー エクスペリエンスを実現するには、カレンダーへの書き込みアクセス権をビジネスに付与することをおすすめします。これにより、イベントを企業のカレンダーに直接追加し([イベントを作成])、そのイベントに予約者を招待できます(参加者を追加)。予約者がカレンダーでイベントを確認してリマインドできるようにするには、予約を確定したらすぐにメールを確認して、出欠確認に [はい] と返信するように伝えます。予定への出欠確認をしたユーザーには、通知設定に従って Google カレンダーからの予定通知が送信されます。

予定を直接予約者のカレンダーに追加する場合は、招待状の送信先となるメールアドレスを連絡先に追加するよう予約者に伝えます。または、予約者にカレンダーへの書き込みアクセス権を要求して、プログラムで出欠確認を行って(参加者の出欠確認の設定)、確認された予約に関するメール通知を送信することもできます。

ビジネスがメールアドレスを公開しない場合は、ユーザー固有のメールアドレスを使用し、メールで予約担当者にイベントを送信します(メールアドレスからユーザーを招待)。

イベントの伝播

次の図は、ダイナミクスを示しています。まず、Jack がメインのカレンダーに予定を作成します(これにより、主催者のコピーを所有します)。次に、チェロのレッスン グループの予備カレンダーと Susan(予定設定が Only if the sender is known)を招待します。参加者のコピーは、チェロのレッスン グループの予備カレンダーに作成されます。また、Jack と知っている場合は Susan のカレンダーに、あるいは出欠確認や Jack を知っていると通知した場合は、Susan のカレンダーに作成されます。Susan が応答すると、出欠確認の変更が主催者に伝播され、主催者のコピーが Susan の応答で更新されます。主催者の予定のコピーに加えられたこれらの変更は、他の参加者にも反映されます。

イベント/参加者の動向を示す図

共有イベント プロパティ

予定を作成するカレンダーは、主催者カレンダーです。このカレンダーは、ID、開始時刻と終了時刻、概要、説明などの共有イベント情報を所有しています。主催者のカレンダーでこの情報が更新されると、その変更が参加者のコピーに反映されます。

非公開イベントのプロパティ

すべての予定のコピー間ですべての情報が共有されるわけではありません。リマインダー、colorId、透明度、extendedProperties.private プロパティなどの一部のプロパティは非公開です。これらのプロパティは、主催者のカレンダーではなく、参加者の設定によって制御されます。

参加者は、予定の共有プロパティを変更することもできます。ただし、これらの変更は自身のコピーにのみ反映され、主催者が変更を加えると失われる可能性があります。

参加者から主催者に伝播される予定の変更は、attendees[].responseStatus プロパティに保存されている参加者の返信ステータスのみです。