このページでは、eventType プロパティと、Google Calendar API で使用可能なイベントタイプの仕様について説明します。
Google カレンダーでは、一般的な予定だけでなく、特定のユースケース向けに設計されたカスタム プロパティ付きの予定も作成できます。
API の次の場所でイベントタイプを確認できます。
- すべてのイベントは
eventTypeを返します。 - イベント リソースを作成または更新するときに
eventTypeを設定します。設定されていない場合、API は'default'を使用します。 - 特定のタイプのイベントを一覧表示するには、
events.list呼び出しでeventTypesを指定します。タイプが指定されていない場合、API はすべてのイベントタイプを返します。 events.watch呼び出しでeventTypesを指定して、特定のタイプのイベントの更新を登録します。タイプが指定されていない場合、リクエストはすべてのイベントタイプをサブスクライブします。
デフォルトのイベント
default イベントタイプのイベントが作成され、Calendar API のメインリソースの 1 つとして使用されます。幅広いプロパティをサポートしており、イベントをさらにカスタマイズできます。
カレンダーの予定の操作を開始するには、予定の作成をご覧ください。
誕生日
誕生日は、毎年繰り返される特別な終日イベントです。
ユーザーはカレンダーで誕生日の予定を手動で作成できます。また、Google コンタクトにユーザーを追加して誕生日などの重要な日付を入力すると、誕生日情報がカレンダーと同期されるようになります。ユーザー自身の誕生日も、Google アカウントのプロフィールからカレンダーに同期されます。
Calendar API は、誕生日イベントの読み取りに events.get、events.instances、events.list の各メソッドをサポートしています。eventTypes を 'birthday' に設定すると、誕生日の予定のみが一覧表示されます。タイプが指定されていない場合、レスポンスには誕生日が他のすべてのイベント タイプとともにリストされます。
返された Event オブジェクトで、birthdayProperties フィールドを調べて、この特別なイベントの詳細を確認します。birthdayProperties には次のフィールドがあります。
type: 誕生日、記念日、その他の重要な日付など、この特別なイベントのタイプ。customTypeName: この特別なイベントのユーザー指定のラベル。typeが'custom'に設定されている場合に入力されます。contact: この特別なイベントがリンクされている連絡先のリソース名(ある場合)。形式は'people/c12345'で、People API から連絡先の詳細を取得するために使用できます。
この API では、次の仕様で events.insert メソッドを使用して誕生日イベントを作成できます。
eventTypeが'birthday'に設定されます。startフィールドとendフィールドは、ちょうど 1 日にまたがる終日の予定を定義する必要があります。visibilityフィールドの値は'private'にする必要があります。transparencyフィールドの値は'transparent'にする必要があります。- 年単位の繰り返しが必要です。つまり、
recurrenceフィールドは'RRULE:FREQ=YEARLY'である必要があります。2 月 29 日に誕生日を迎えるイベントには、次の繰り返しルール'RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1'が必要です。 colorId、summary、remindersを指定できます。birthdayPropertiesを持つことができます。指定する場合、typeは'birthday'にする必要があります。また、customTypeNameとcontactの両方を空にする必要があります。- 他のイベント プロパティを含めることはできません。
API を使用すると、events.update メソッドと events.patch メソッドを使用して、誕生日イベントの colorId、summary、reminders を更新できます。start フィールドと end フィールドを更新して、イベントの日付を変更することもできます。この場合、新しい値は 1 日だけ続く終日イベントを定義する必要があります。誕生日イベントが contact にリンクされている場合、または type が 'self' の場合、誕生日イベントのタイミングの詳細は更新できません。
Calendar API では、カスタムの birthdayProperties を使用した誕生日の予定の作成や、これらのプロパティの更新はできません。重要な日付は People API で編集でき、変更はカレンダーと同期されます。同様に、ユーザーは Google アカウントのプロフィールで自分の生年月日を編集できます。編集した内容はカレンダーと同期されます。
サポートされていない方法で誕生日を作成または更新しようとするリクエストは失敗します。この場合は、エラー メッセージを調べて問題を特定します。
この API は、誕生日の予定の events.import オペレーションをサポートしていますが、予定はデフォルトの予定としてインポートされます。つまり、eventType は 'default' になります。
この API は、カレンダーの誕生日の予定の変更を登録するための events.watch メソッドをサポートしています。eventTypes を 'birthday' に設定すると、誕生日の予定の更新をサブスクライブできます。タイプが指定されていない場合、リクエストは誕生日を含むすべてのイベントタイプをサブスクライブします。
誕生日イベントは、Calendar API の events.delete メソッドを使用して削除できます。カレンダーから誕生日イベントを削除しても、Google コンタクトや Google アカウントのプロフィールのデータには影響しません。
events.move メソッドまたは events.update メソッドを使用して誕生日イベントの主催者を変更することはできません。
Gmail からの予定
Gmail から自動的に生成された予定のイベントタイプは 'fromGmail' です。
Calendar API では、events.insert メソッドを使用してこのイベントタイプを作成することはできません。
この API を使用すると、events.update メソッドと events.patch メソッドを使用して、colorId、reminders、visibility、transparency、status、attendees、private、shared の拡張プロパティを更新できます。
この API は、Gmail からの予定を読み取るための events.get メソッドと events.list メソッドをサポートしています。eventTypes を 'fromGmail' に設定すると、Gmail から生成されたイベントのみを一覧表示できます。タイプを指定しない場合、Gmail からの予定は他のすべてのタイプの予定とともに表示されます。
この API は、Calendar の Gmail からの予定の変更を登録する events.watch メソッドをサポートしています。タイプが指定されていない場合、リクエストは 'fromGmail' を含むすべてのイベントタイプをサブスクライブします。
Gmail からの予定を削除するには、Calendar API の events.delete メソッドを使用します。
events.move メソッドまたは events.update メソッドを使用して Gmail から予定の主催者を変更することはできません。
サイレント モード、不在設定、勤務場所
Calendar API を使用して、カレンダー ユーザーのステータスを表示する予定を作成、管理できます。
これらの機能は、メイン カレンダーでのみ、一部のカレンダー ユーザーに提供されます。詳しくは、サイレント モード、不在、勤務地のイベントを管理するをご覧ください。
Apps Script のイベントタイプを確認する
Apps Script は、JavaScript ベースのクラウド スクリプト言語です。この言語を使用すると、Google Workspace と統合するビジネス アプリケーションを構築できます。スクリプトはブラウザベースのコードエディタで開発され、Google のサーバーに保存されて実行されます。Calendar API にリクエストを送信するために Apps Script の使用を開始するには、Apps Script のクイックスタートもご覧ください。
次の手順では、Apps Script の高度なサービスとして Calendar API を使用して予定を読み取り、管理する方法について説明します。Calendar API のリソースとメソッドの一覧については、リファレンス ドキュメントをご覧ください。
スクリプトを作成して設定する
- script.google.com/create にアクセスしてスクリプトを作成します。
- 左側のペインで、[サービス] の横にある [サービスを追加] をクリックします。
- [Calendar API] を選択して、[追加] をクリックします。
- API を有効にすると、左側のペインに表示されます。エディタで
Calendarと入力すると、API で使用可能なメソッドとクラスを一覧表示できます。
(省略可)Cloud プロジェクトを更新する
各 Apps Script プロジェクトには、関連付けられた Cloud プロジェクトがあります。スクリプトでは、Apps Script が自動的に作成するデフォルトのプロジェクトを使用できます。カスタム クラウド プロジェクトを使用する場合は、別の標準 Cloud プロジェクトに切り替えるをご覧ください。Cloud プロジェクトを設定したら、左側の [エディタ] を選択して、コードエディタに戻ります。
スクリプトにコードを追加する
次のコードサンプルは、異なる eventType 値を持つイベントを一覧表示、読み取り、作成する方法を示しています。
次のコードをコードエディタに貼り付けます。
const CALENDAR_ID = 'CALENDAR_ID' || 'primary'; /** Lists default events. */ function listDefaultEvents() { listEvents('default'); } /** Lists birthday events. */ function listBirthdays() { listEvents('birthday'); } /** Lists events from Gmail. */ function listEventsFromGmail() { listEvents('fromGmail'); } /** * Lists events with the given event type. If no type is specified, lists all events. * See https://developers.google.com/workspace/calendar/api/v3/reference/events/list */ function listEvents(eventType = undefined) { // Query parameters for the list request. const optionalArgs = { eventTypes: eventType ? [eventType] : undefined, singleEvents: true, timeMax: '2024-07-30T00:00:00+01:00', timeMin: '2024-07-29T00:00:00+01:00', } try { var response = Calendar.Events.list(CALENDAR_ID, optionalArgs); response.items.forEach(event => console.log(event)); } catch (exception) { console.log(exception.message); } } /** * Reads the event with the given eventId. * See https://developers.google.com/workspace/calendar/api/v3/reference/events/get */ function readEvent() { try { var response = Calendar.Events.get(CALENDAR_ID, 'EVENT_ID'); console.log(response); } catch (exception) { console.log(exception.message); } } /** Creates a default event. */ function createDefaultEvent() { const event = { start: { dateTime: '2024-07-30T10:30:00+01:00'}, end: { dateTime: '2024-07-30T12:30:00+01:00'}, description: 'Created from Apps Script.', eventType: 'default', summary: 'Sample event', } createEvent(event); } /** Creates a birthday event. */ function createBirthday() { const event = { start: { date: '2024-01-29' }, end: { date: '2024-01-30' }, eventType: 'birthday', recurrence: ["RRULE:FREQ=YEARLY"], summary: "My friend's birthday", transparency: "transparent", visibility: "private", } createEvent(event); } /** * Creates a Calendar event. * See https://developers.google.com/workspace/calendar/api/v3/reference/events/insert */ function createEvent(event) { try { var response = Calendar.Events.insert(event, CALENDAR_ID); console.log(response); } catch (exception) { console.log(exception.message); } }次のように置き換えます。
CALENDAR_ID: イベントの取得と作成を行うカレンダーのメールアドレス。この定数は、最初は'primary'に設定されています。これは、ログインしているユーザーのメイン カレンダーにアクセスするためのキーワードです。この値を変更すると、アクセス権のある他のユーザーのカレンダーの予定を読み取ることができます。EVENT_ID: イベントの ID。events.listを呼び出して、イベント ID を取得できます。
コードサンプルの実行
- コードエディタの上にあるプルダウン メニューから実行する関数を選択し、[実行] をクリックします。
- スクリプトを初めて実行するときは、アクセスを承認するよう求められます。Apps Script がカレンダーにアクセスすることを承認します。
- スクリプト実行の結果は、ウィンドウの下部に表示される [実行ログ] で確認できます。