このガイドでは、カレンダー、イベント、およびそれらの相互の関係について説明します。
カレンダー
カレンダー は、関連するイベントのコレクションであり、概要、デフォルトのタイムゾーン、場所などの追加のメタデータ が含まれています。各カレンダーは、メールアドレスである ID で識別されます。カレンダーは他のユーザーと共有できます。 メインのカレンダーは、関連付けられたユーザー アカウントが所有します。他のカレンダーは、単一のデータ オーナーが所有します。
イベント
イベント は、特定の日付または期間に関連付けられたオブジェクトです。イベントは一意の ID で識別されます。イベントには、開始日時と終了日時の他に、概要、説明、場所、ステータス、リマインダー、添付ファイルなどのデータが含まれます。
イベントの種類
Google カレンダーでは、 単一 イベントと 定期的な イベントがサポートされています。
- 単一 イベントは、一意の発生を表します。
- 定期的な イベントは、複数の発生を定義します。
イベントは、 時間指定 または 終日 にすることもできます。
- 時間指定 イベントは、2 つの特定の時点の間で発生します。時間指定イベントでは、
start.dateTimeフィールドとend.dateTimeフィールドを使用して、発生するタイミングを指定します。 - 終日 イベントは、1 日または連続する複数の日にわたって発生します。終日イベントでは、
start.dateフィールドとend.dateフィールドを使用して、発生するタイミングを指定します。 タイムゾーン フィールドは、終日イベントでは意味がないことに注意してください。
主催者
イベントには、イベントのメインコピーを含むカレンダーである単一の 主催者 があります。イベントには複数の 参加者を設定することもできます。 参加者は通常、招待されたユーザーのメイン カレンダーです。
次の図は、カレンダー、イベント、その他の関連要素の概念的な関係を示しています。

メインのカレンダーと他のカレンダー
メイン のカレンダーは、単一のユーザー アカウントに関連付けられた特殊なタイプのカレンダーです。このカレンダーは、新しいユーザー アカウントごとに自動的に作成され、その ID は通常、ユーザーのメインのメールアドレスと一致します。アカウントが存在する限り、メイン カレンダーを削除したり、ユーザーが「所有権を解除」したりすることはできません。ただし、他のユーザーと共有することはできます。
メイン カレンダーに加えて、他のカレンダーを任意の数だけ明示的に作成できます。これらのカレンダーは、変更、削除、他のユーザーとの共有が可能です。このようなカレンダーには、カレンダーを削除する排他的な権限など、最も高い権限を持つ単一のデータ オーナーがいます。データ オーナーのアクセスレベルを下げることはできません。データ オーナーは、最初はカレンダーを作成したユーザーとして決定されますが、Google カレンダーの UI でデータ所有権を移転できます。
カレンダーとカレンダー リスト
Calendars コレクション は、既存のすべてのカレンダーを表します。カレンダーの作成と削除に使用できます。また、カレンダーにアクセスできるすべてのユーザー間で共有されるグローバル プロパティを取得または設定することもできます。たとえば、カレンダーのタイトルとデフォルトのタイムゾーンはグローバル プロパティです。
CalendarList は、ユーザーがリストに追加したすべてのカレンダー エントリの コレクションです(ウェブ UI の左側のパネルに 表示されます)。これを使用して、既存のカレンダーをユーザーのリストに追加または削除できます。また、デフォルトのリマインダーなど、ユーザー固有のカレンダー プロパティの値を取得して設定することもできます。別の例として、同じカレンダーでもユーザーごとに異なる色を設定できるため、前景色があります。
次の表に、2 つのコレクションのオペレーションの意味を示します。
| オペレーション | カレンダー | CalendarList |
|---|---|---|
insert |
新しい予備カレンダーを作成します。このカレンダーは作成者のカレンダー リストにも追加され、カレンダーが削除または移転されない限り削除できません。 | 既存のカレンダーをユーザーのリストに挿入します。 |
delete |
予備カレンダーを削除します。 | ユーザーのリストからカレンダーを削除します。 |
get |
カレンダーのメタデータ(タイトルやタイムゾーンなど)を取得します。 | メタデータに加えて、色やリマインダーの上書きなど、ユーザー固有のカスタマイズを取得します。 |
patch/update |
カレンダーのメタデータを変更します。 | ユーザー固有のカレンダー プロパティを変更します。 |
定期的な予定
一部のイベントは、毎週の会議、誕生日、祝日など、定期的なスケジュールで複数回発生します。これらの繰り返しイベントは、開始時刻と終了時刻が異なる場合を除き、多くの場合同じです。
定義されたスケジュールに従って繰り返されるイベントは、 定期的な イベントと呼ばれます。 単一 イベントは繰り返されず、1 回だけ発生します。
繰り返しルール
定期的な予定のスケジュールは、次の 2 つの部分で定義されます。
開始フィールドと終了フィールド(スタンドアロンの単一イベントであるかのように、最初の発生を定義します)。
繰り返しフィールド(イベントを繰り返す方法を定義します)。
繰り返しフィールドには、
RRULE、RDATE、EXDATE プロパティを表す文字列の配列が含まれます。これらは RFC
5545 で定義されています。
RRULE プロパティは、イベントを繰り返すための通常のルールを定義するため、最も重要です。これはいくつかのコンポーネントで構成されています。一部を次に示します。
FREQ- イベントを繰り返す頻度(DAILYやWEEKLYなど)。必須。INTERVAL-FREQと組み合わせて、イベントを繰り返す頻度を指定します。たとえば、FREQ=DAILY;INTERVAL=2は 2 日に 1 回という意味です。COUNT- このイベントを繰り返す回数。UNTIL- イベントを繰り返す日付または日時(包括的)。BYDAY- イベントを繰り返す曜日(SU、MO、TUなど)。他の同様のコンポーネントには、BYMONTH、BYYEARDAY、BYHOURなどがあります。
RDATE プロパティは、イベントの発生が発生する追加の日付または日時を指定します。例: RDATE;VALUE=DATE:19970101,19970120。
これを使用して、RRULE でカバーされていない追加の発生を追加します。
EXDATE プロパティは RDATE と似ていますが、イベントが発生しない日付または日時を指定します。 つまり、これらの発生は除外されます。これは、繰り返しルールによって生成された有効なインスタンスを指している必要があります。
EXDATE と RDATE にはタイムゾーンを設定できます。終日イベントの場合は、日付(日時ではない)にする必要があります。
各プロパティは、繰り返しフィールド内で複数回発生する可能性があります。
繰り返しは、すべての RRULE ルールと RDATE ルールの和集合から、すべての EXDATE ルールによって除外されたものを除いたものとして定義されます。
定期的なイベントの例を次に示します。
2015 年 9 月 15 日から毎週火曜日と金曜日の午前 6 時から午前 7 時まで発生し、2015 年 9 月 29 日の 5 回目の発生後に停止するイベント。
... "start": { "dateTime": "2015-09-15T06:00:00+02:00", "timeZone": "Europe/Zurich" }, "end": { "dateTime": "2015-09-15T07:00:00+02:00", "timeZone": "Europe/Zurich" }, "recurrence": [ "RRULE:FREQ=WEEKLY;COUNT=5;BYDAY=TU,FR" ], ...2015 年 6 月 1 日から開始し、6 月 10 日を除き、6 月 9 日と 6 月 11 日を含む、1 か月間 3 日ごとに繰り返される終日イベント。
... "start": { "date": "2015-06-01" }, "end": { "date": "2015-06-02" }, "recurrence": [ "EXDATE;VALUE=DATE:20150610", "RDATE;VALUE=DATE:20150609,20150611", "RRULE:FREQ=DAILY;UNTIL=20150628;INTERVAL=3" ], ...
インスタンスと例外
定期的な予定は、複数の インスタンスで構成されます。これは、異なる時間に発生する特定のイベントです。これらのインスタンスは、イベント自体として機能します。
定期的な予定の変更は、定期的な予定全体(とそのすべてのインスタンス)に影響する場合と、個々のインスタンスにのみ影響する場合があります。親の定期的な予定と異なるインスタンスは、 例外 と呼ばれます。
たとえば、例外の概要が異なる場合や、開始時刻が異なる場合、そのインスタンスにのみ招待された参加者が追加されている場合があります。定期的な予定を削除せずに、インスタンスを完全にキャンセルすることもできます(インスタンスのキャンセルはイベントの
statusに反映されます)。
Google Calendar API を使用して定期的なイベントとインスタンスを操作する方法の例については、定期的なイベントをご覧ください。
タイムゾーン
タイムゾーンは、統一された標準時を遵守する地域を指定します。 Google Calendar API では、 IANA タイムゾーン識別子を使用してタイムゾーンを指定します。
カレンダーとイベントの両方にタイムゾーンを設定できます。次のセクションでは、これらの設定の効果について説明します。
カレンダーのタイムゾーン
カレンダーのタイムゾーンは、クエリ結果に影響するため、 デフォルトのタイムゾーン とも呼ばれます。カレンダーのタイムゾーンは、
時刻値が
events.get()、
events.list()、
events.instances() メソッドで解釈または表示される方法に影響します。
- クエリ結果のタイムゾーン変換
- `get
get()()`、`listlist()()`、`instancesinstances()()` メソッドの結果は、`timeZonetimeZone` パラメータで指定したタイムゾーンで返されます。このパラメータを省略すると、これらのメソッドはすべてデフォルトとしてカレンダーのタイムゾーンを使用します。 - 時間枠付きクエリに一致する終日イベント
- The
list()およびinstances()メソッドでは、開始時刻と終了時刻のフィルタを指定できます。このメソッドは、指定された範囲内のインスタンスを返します。カレンダーのタイムゾーンは、終日イベントの開始時刻と終了時刻を計算して、フィルタ仕様の範囲内にあるかどうかを判断するために使用されます。
予定のタイムゾーン
イベント インスタンスには開始時刻と終了時刻があります。これらの時刻の指定にはタイムゾーンを含めることができます。タイムゾーンはいくつかの方法で指定できます。次の例ではすべて同じ時刻を指定しています。
dateTimeフィールドにタイムゾーン オフセットを含めます(例:2017-01-25T09:00:00-0500)。- オフセットなしで時刻を指定します(例:
2017-01-25T09:00:00)。timeZoneフィールドを空のままにします(デフォルトのタイムゾーンが暗黙的に使用されます)。 - オフセットなしで時刻を指定します(例:
2017-01-25T09:00:00)。timeZoneフィールドを使用してタイムゾーンを指定します。
必要に応じて、イベント時刻を UTC で指定することもできます。
- 時刻を UTC で指定します:
2017-01-25T14:00:00Zまたはゼロ オフセット2017-01-25T14:00:00+0000を使用します。
これらの場合、イベント時刻の内部表現は同じですが、
timeZone フィールドを設定すると、カレンダー
UI を使用してイベントのタイムゾーンを設定した場合と同様に、イベントにタイムゾーンが設定されます。

定期的な予定のタイムゾーン
定期的なイベントの場合は、イベントの繰り返しを拡張するために、常に単一のタイムゾーンを指定する必要があります。