イベントタイプ

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

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

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

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

デフォルトのイベント

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

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

誕生日

誕生日は、毎年繰り返される特別な終日イベントです。

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

以下の手順では、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/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 を取得できます。

サンプルコードの実行

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