イベントタイプ

このページでは、eventType プロパティと、Google Calendar API で使用できるイベントタイプの仕様について説明します。

Google カレンダーでは、一般的な予定だけでなく、特定のユースケース向けにカスタム プロパティを使用して作成された予定も作成できます。

イベントタイプは、API の次の場所で確認できます。

  • すべてのイベントは eventType とともに返されます。
  • イベント リソースの作成または更新時に eventType を設定する必要があります。未設定の場合、'default' タイプが使用されます。
  • eventTypesEvents:list 呼び出しで指定すると、特定のタイプのイベントを一覧表示できます。タイプを指定しないと、すべてのイベントタイプが返されます。
  • eventTypes は、特定のタイプのイベントの更新をサブスクライブするために Events:watch 呼び出しで指定できます。タイプが指定されていない場合、リクエストはすべてのイベントタイプにサブスクライブされます。

デフォルトのイベント

イベントタイプが default の予定は、Google Calendar API の主要なリソースの 1 つとして作成され、使用されます。イベントをさらにカスタマイズするために使用できる幅広いプロパティをサポートしています。

Google カレンダーの予定の操作を開始するには、予定を作成するをご覧ください。

誕生日

誕生日は、1 年に 1 回繰り返される特別な終日の予定です。

ユーザーは Google カレンダーで誕生日の予定を手動で作成できます。また、Google コンタクトにユーザーを追加して誕生日やその他の重要な日付を入力すると、誕生日情報が Google カレンダーと同期されるようになります。ユーザー自身の誕生日も、Google アカウント プロフィールから Google カレンダーに同期されます。

Google Calendar API は、誕生日イベントの読み取りに getinstanceslist メソッドをサポートしています。eventTypes'birthday' に設定すると、誕生日のイベントのみが一覧表示されます。タイプを指定しないと、誕生日は他のすべてのイベント タイプとともに一覧表示されます。

返された Event オブジェクトで birthdayProperties フィールドを調べて、この特別なイベントの詳細を確認します。birthdayProperties には次のフィールドがあります。

  • type: この特別なイベントの種類(誕生日、記念日、その他の重要な日付など)。
  • customTypeName: この特別なイベントのユーザー指定のラベル。type'custom' に設定されている場合に入力されます。
  • contact: この特別なイベントがリンクされている連絡先のリソース名(該当する場合)。形式は 'people/c12345' で、People API から連絡先情報を取得するために使用できます。

この API では、次の仕様で insert メソッドを使用して誕生日イベントを作成できます。

  • eventType'birthday' に設定されています。
  • start フィールドと end フィールドには、1 日間だけ続く終日イベントを定義する必要があります。
  • visibility フィールドの値は 'private' にする必要があります。
  • transparency フィールドの値は 'transparent' にする必要があります。
  • 年単位で繰り返す必要があるため、recurrence フィールドは 'RRULE:FREQ=YEARLY' にする必要があります。2 月 29 日に発生する誕生日イベントには、次の繰り返しルールが必要です。'RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1'
  • colorIdsummaryreminders を指定できます。
  • birthdayProperties を含めることができます。指定する場合、type'birthday' にする必要があります。また、customTypeNamecontact の両方を空にする必要があります。
  • 他のイベント プロパティは使用できません。

この API を使用すると、update メソッドと patch メソッドを使用して、誕生日イベントの colorIdsummaryreminders を更新できます。start フィールドと end フィールドを更新して、イベントの日付を変更することもできます。この場合、新しい値では、1 日間だけ続く終日イベントを定義する必要があります。誕生日の予定が contact にリンクされている場合、または type'self' の場合、誕生日の予定のタイミングの詳細を更新することはできません。

Google Calendar API では、カスタム birthdayProperties を使用して誕生日イベントを作成したり、これらのプロパティを更新したりすることはできません。重要な日付は People API で編集できます。変更は Google カレンダーと同期されます。同様に、ユーザーは Google アカウントのプロフィールで自分の生年月日を編集できます。この情報は Google カレンダーと同期されます。

サポートされていない方法で誕生日を作成または更新しようとするリクエストは失敗します。この場合は、エラー メッセージを調べて問題を特定します。

API は、誕生日イベントの import オペレーションをサポートしていますが、イベントはデフォルト イベントとしてインポートされます。つまり、eventType'default' になります。

この API は、Google カレンダーの誕生日イベントの変更を定期購読する watch メソッドをサポートしています。eventTypes'birthday' に設定すると、誕生日イベントの更新をサブスクライブできます。タイプが指定されていない場合、誕生日を含むすべてのイベントタイプが定期購入されます。

誕生日イベントは、Google Calendar API の delete メソッドを使用して削除できます。Google カレンダーから誕生日の予定を削除しても、Google コンタクトGoogle アカウント プロフィールのデータには影響しません。

move メソッドまたは update メソッドを使用して誕生日の予定の主催者を変更することはできません。

Gmail からの予定

Gmail から自動生成された予定は、イベントタイプ 'fromGmail' です。

Google Calendar API では、insert メソッドを使用してこのイベントタイプを作成することはできません。

この API を使用すると、update メソッドと patch メソッドを使用して、colorIdremindersvisibilitytransparencystatusattendeesprivateshared の拡張プロパティを更新できます。

この API は、Gmail からイベントを読み取る get メソッドと list メソッドをサポートしています。eventTypes'fromGmail' に設定すると、Gmail から生成されたイベントのみが一覧表示されます。タイプを指定しないと、Gmail のイベントは他のすべてのイベントタイプとともに一覧表示されます。

この API は、Google カレンダーの Gmail の予定の変更をサブスクライブする watch メソッドをサポートしています。タイプが指定されていない場合、'fromGmail' を含むすべてのイベントタイプがサブスクライブされます。

Gmail の予定は、Google Calendar API の delete メソッドを使用して削除できます。

move メソッドまたは update メソッドを使用して Gmail から予定の主催者を変更することはできません。

サイレント モード、不在設定、勤務場所

Google Calendar API を使用すると、Google カレンダー ユーザーのステータスを表すイベントを作成して管理できます。

これらの機能は、メイン カレンダーと一部の Google カレンダー ユーザーでのみご利用いただけます。詳しくは、サイレント モード、不在、勤務地のイベントを管理するをご覧ください。

Google Apps Script のイベントタイプを確認する

Google Apps Script は、Google Workspace と統合されたビジネス アプリケーションを構築できる JavaScript ベースのクラウド スクリプト言語です。スクリプトはブラウザベースのコードエディタで開発され、Google のサーバーに保存されて実行されます。Apps Script を使用して Google Calendar API にリクエストを送信する方法については、Google Apps Script クイックスタートもご覧ください。

以下の手順では、Google Apps Script で高度なサービスとして Google Calendar API を使用して、予定を読み取り、管理する方法について説明します。Google Calendar API のリソースとメソッドの一覧については、リファレンス ドキュメントをご覧ください。

スクリプトを作成して設定する

  1. script.google.com/create に移動してスクリプトを作成します。
  2. 左側のペインで、[サービス] の横にある [サービスを追加] をクリックします。
  3. [Google Calendar API] を選択し、[追加] をクリックします。
  4. 有効にすると、API が左側のペインに表示されます。API で使用可能なメソッドとクラスは、エディタで Calendar キーワードを使用して一覧表示できます。

(省略可)Google Cloud プロジェクトを更新する

各 Google Apps Script プロジェクトには、関連付けられた Google Cloud プロジェクトがあります。スクリプトでは、Google Apps Script が自動的に作成するデフォルト プロジェクトを使用できます。カスタムの Google Cloud プロジェクトを使用する場合は、別の標準 Cloud プロジェクトに切り替えるをご覧ください。Google Cloud プロジェクトを設定したら、左側の [エディタ] を選択してコードエディタに戻ります。

スクリプトにコードを追加する

次のコードサンプルは、異なる eventType 値を持つイベントを一覧表示、読み取り、作成する方法を示しています。

  1. 次のコードをコードエディタに貼り付けます。

    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/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/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/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 を取得できます。

サンプルコードの実行

  1. コードエディタの上にあるプルダウン メニューから実行する関数を選択し、[実行] をクリックします。
  2. 初回実行時に、アクセスを承認するよう求められます。Apps Script がカレンダーにアクセスできるように確認して許可します。
  3. スクリプト実行の結果は、ウィンドウの下部に表示される [Execution Log] で確認できます。