予定を作成する
主催者の Google カレンダーに対する書き込み権限がある場合は、Events: insert
メソッドを使用してイベントを追加できます。
このメソッドは、招待状を追加する設定に関係なく、予定を主催者のカレンダーに直接追加します。
参加者を追加する
このメソッドでは、イベントの attendees
プロパティにメールアドレスを追加することで、同じイベントに参加者を追加することもできます。主催者が予定に加えた変更は、参加者に伝播されます。
参加者には、主催者のメールアドレスから招待状が届きます。Google カレンダーのユーザーは、Google カレンダーの設定の [予定] の設定に応じて、メールまたはカレンダーで招待状を受け取ります。
From everyone
の設定が有効になっている場合、予定はカレンダーに直接追加されます。Only if the sender is known
の設定が有効になっている場合、以前に主催者とやり取りしたことがある、主催者が同じ組織に属している、主催者が Google コンタクトに登録されている場合は、予定がカレンダーに直接追加されます。主催者が不明な場合は、招待メールの [カレンダーに追加] をクリックするか、[はい] または [未定] をクリックして出欠確認に返答します。予定がカレンダーに追加されます。- ユーザーが
When I respond in email
の設定にしている場合、招待メールの [はい]、[未定]、[いいえ] のいずれかをクリックして出欠確認に返信するまで、すべての招待状がカレンダーに追加されません。
Google カレンダーに招待状が追加される仕組みについて詳しくは、カレンダーで招待状を管理するをご覧ください。
参加者のカレンダーに予定を直接表示する
Google カレンダーの参加者のカレンダーに予定を直接表示するには、参加者の設定に関係なく、参加者の出欠確認を設定するか、参加者のカレンダーに予定のコピーを直接インポートします。どちらの方法でも、参加者のカレンダーに対する書き込みアクセス権が必要です。書き込みアクセス権がない場合は、主催者を参加者の連絡先に追加することを検討してください。この場合、参加者の連絡先に対する書き込みアクセス権が必要になることがあります。
参加者の出欠確認を設定する
イベントの参加者の出欠確認を設定する手順は次のとおりです。
- Google カレンダーの主催者のカレンダーで予定を作成し、参加者を追加します(上記を参照)。
Events: update
メソッドを使用して、出席者の出欠確認をaccepted
またはtentative
に設定します。参加者のカレンダーに対する書き込みアクセス権が必要です。予定が参加者のカレンダーに表示されるまでに少し時間がかかることがあります。Events: update
メソッドの使用方法について詳しくは、こちらをご覧ください。
この方法では、予定は参加者のカレンダーに追加されますが、招待状が以前に認識されていないアドレスから送信されたことを示すバナーがメールに表示されることがあります。
参加者のカレンダーに予定のコピーを直接インポートする
予定のコピーを参加者のカレンダーにインポートする手順は次のとおりです。
- 主催者の Google カレンダーへの書き込みアクセス権がある場合は、
Events: import
メソッドを使用して予定のコピーをインポートします。 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 カレンダーのユーザーが予定を 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 形式を使用します。上記の例では、
20230325T224500Z
と20230326T001500Z
を置き換えます。 - 開始タイムゾーンと終了タイムゾーン: IANA タイムゾーン データベース名としてフォーマットします。タイムゾーンを
stz
フィールドとetz
フィールドに入力します。 - イベントの説明: URL エンコードする必要があります。
- イベントの場所: URL エンコードされている必要があります。
- イベントのタイトル: URL エンコードされている必要があります。
例
ユーザーがビジネスの予約を行えるようにする予約サービスを構築する例を考えてみましょう。ユーザーが予約したときに、予約したユーザーとビジネスの Google カレンダーに予定を追加するサービスを作成します。
ユーザー エクスペリエンスを向上させるため、ビジネスがカレンダーへの書き込みアクセス権を付与し、予約者がビジネスのカレンダーに予定を直接追加(予定を作成)して、予約者をその予定に招待(参加者を追加)できるようにすることをおすすめします。予約者がカレンダーで予定を確認し、リマインダーを受け取れるように、予約後すぐにメールを確認して予定に「はい」と返信するように伝えます。予定への出欠確認に返答すると、通知設定に基づいて Google カレンダーから予定の通知が送信されます。
予約者のカレンダーに予定を直接追加する場合は、招待状が届くメールアドレスを連絡先に追加するよう予約者に伝えます。または、予約者にカレンダーへの書き込み権限をリクエストして、予約者の代わりにプログラムで出欠確認を行い(出席者の出欠確認を設定する)、予約確定のメール通知を送信します。
メールアドレスを公開したくない場合は、ユーザー固有のメールアドレスを使用して、メールで予約者にイベントを送信します(メールアドレスからユーザーを招待する)。
イベントの伝播
次の図は、このダイナミクスを示しています。まず、Jack はメインのカレンダーに予定を作成します(したがって、主催者のコピーを所有します)。次に、チェロ レッスン グループのセカンダリ カレンダーと、イベント設定が Only if the sender is known
の Susan を招待します。参加者のコピーは、チェロ レッスン グループの予備のカレンダーと、スーザンがジャックを知っている場合はスーザンのカレンダーに作成されます。スーザンがジャックを知らない場合は、スーザンが参加の返信をしたとき、またはジャックを知っていることを示したときに作成されます。Susan が返信すると、出欠確認の変更が主催者に伝播され、主催者のコピーが Susan の返信で更新されます。主催者の予定のコピーに加えられた変更は、他の参加者に伝播されます。
共有イベントのプロパティ
予定が作成されるカレンダーは、主催者のカレンダーです。このカレンダーは、ID、開始時間と終了時間、概要、説明などの共有イベント情報を所有しています。この情報が主催者のカレンダーで更新されると、変更は参加者のコピーに反映されます。
プライベート イベントのプロパティ
すべてのイベントのコピー間で共有される情報があるわけではありません。リマインダー、colorId
、透明度、extendedProperties.private
プロパティなど、一部のプロパティは非公開です。これらのプロパティは、主催者のカレンダーではなく、参加者の設定によって制御されます。
参加者は、予定の共有プロパティを変更することもできます。ただし、これらの変更は自分のコピーにのみ反映され、主催者が変更を加えると失われる可能性があります。
参加者から主催者に伝播される唯一の予定の変更は、attendees[].responseStatus
プロパティに保存されている参加者の返信ステータスです。