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

予定を作成する

主催者の 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 回限りの予定を最新の状態に維持せずに 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 が応答すると、RSVP の変更が主催者に伝播され、Susan の応答で主催者のコピーが更新されます。主催者が予定のコピーに対して行った変更は、他の参加者にも反映されます。

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

共有イベントのプロパティ

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

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

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

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

参加者から主催者に反映される予定の変更は、参加者の応答ステータスのみで、attendees[].responseStatus プロパティに格納されます。