Events: import

イベントをインポートします。この操作は、既存の予定の個人用コピーをカレンダーに追加するために使用します。 今すぐ試すまたは例を見る

リクエスト

HTTP リクエスト

POST https://www.googleapis.com/calendar/v3/calendars/calendarId/events/import

パラメータ

パラメータ名 説明
パスパラメータ
calendarId string カレンダーの識別子。カレンダー ID を取得するには、calendarList.list メソッドを呼び出します。現在ログインしているユーザーのメイン カレンダーにアクセスするには、「primary」キーワードを使用します。
省略可能なクエリ パラメータ
conferenceDataVersion integer API クライアントでサポートされている会議データのバージョン番号。バージョン 0 の場合、会議データがサポートされていないと想定され、イベントの本文に含まれる会議データは無視されます。バージョン 1 では、ConferenceData のコピーがサポートされているほか、conferenceData の createRequest フィールドを使用した新しい会議の作成もサポートされるようになりました。デフォルト値は 0 です。有効な値は 01 です。
supportsAttachments boolean オペレーションを実行する API クライアントがイベントの添付ファイルをサポートしているかどうかを指定します。(省略可)デフォルトは False です。

承認

このリクエストは、少なくとも次のうち 1 つのスコープによる承認が必要です。

範囲
https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/calendar.events

詳細については、認証と認可のページをご覧ください。

リクエスト本文

リクエストの本文には、以下のプロパティを使用してイベント リソースを指定します。

プロパティ名 説明 メモ
必須プロパティ
end nested object イベントの(排他的な)終了時間。定期的な予定の場合は、初回の開始時刻になります。
iCalUID string RFC5545 で定義されているイベントの一意の識別子。複数のカレンダー システムにまたがるイベントを一意に識別するために使用され、import メソッドを使ってイベントをインポートするときに指定する必要があります。

iCalUIDid は同一ではないため、イベント作成時にどちらか一方のみを指定する必要があります。それらのセマンティクスの違いの一つは、定期的なイベントでは、1 つのイベントの発生ではすべて同じ iCalUID を共有するのに対し、そのイベントはすべて異なる id を持つことです。iCalUID を使用してイベントを取得するには、iCalUID パラメータを使用して events.list メソッドを呼び出します。id を使用してイベントを取得するには、events.get メソッドを呼び出します。

start nested object イベントの開始時間(両端を含む)。定期的な予定の場合は、初回の開始時刻になります。
省略可能なプロパティ
anyoneCanAddSelf boolean 誰でも自分自身を予定に招待できるかどうか(サポート終了)。(省略可)デフォルトは False です。 書き込み可能
attachments[].fileUrl string 添付ファイルへの URL リンク。

Google ドライブのファイル添付ファイルを追加するには、Drive API の Files リソースの alternateLink プロパティと同じ形式を使用します。

添付ファイルを追加する場合は必須です。

書き込み可能
attendees[] list イベントの参加者。他のカレンダー ユーザーとの予定の設定について詳しくは、参加者の予定をご覧ください。サービス アカウントは、参加者リストへのユーザー入力にドメイン全体の委任を使用する必要があります。 書き込み可能
attendees[].additionalGuests integer 同伴者の人数。(省略可)デフォルト値は 0 です。 書き込み可能
attendees[].comment string 参加者の返信コメント。省略可。 書き込み可能
attendees[].displayName string 参加者の名前(ある場合)。省略可。 書き込み可能
attendees[].email string 参加者のメールアドレス(ある場合)。このフィールドは、参加者を追加するときに指定する必要があります。RFC5322 に準拠した有効なメールアドレスを指定する必要があります。

参加者を追加する場合は必須です。

書き込み可能
attendees[].optional boolean 任意参加者かどうか。(省略可)デフォルトは False です。 書き込み可能
attendees[].resource boolean 参加者がリソースかどうかを示します。参加者が初めて予定に追加された場合にのみ設定できます。後続の変更は無視されます。(省略可)デフォルトは False です。 書き込み可能
attendees[].responseStatus string 参加者の返信ステータス。有効な値は次のとおりです。
  • needsAction」 - 参加者は招待に応答していません(新しい予定におすすめ)。
  • declined」 - 参加者は招待を辞退しました。
  • tentative」 - 参加者は招待を仮承諾しています。
  • accepted」 - 参加者が招待を承諾しました。
書き込み可能
attendeesOmitted boolean イベントの表現から参加者が除外されている可能性があるかどうか。イベントを取得する際に、maxAttendee クエリ パラメータで指定された制限が原因である可能性があります。予定を更新する際は、参加者の回答の更新のみに使用できます。(省略可)デフォルトは False です。 書き込み可能
colorId string イベントの色。これは、色定義の event セクション内のエントリを参照する ID です( 色エンドポイントを参照)。省略可。 書き込み可能
conferenceData nested object 会議関連情報(Google Meet の会議の詳細など)。新しい会議の詳細を作成するには、createRequest フィールドを使用します。変更を維持するには、すべてのイベント変更リクエストで conferenceDataVersion リクエスト パラメータを必ず 1 に設定してください。 書き込み可能
description string イベントの説明。HTML を含めることができます。省略可。 書き込み可能
end.date date 終日イベントの場合は、「yyyy-mm-dd」形式の日付。 書き込み可能
end.dateTime datetime 日付と時刻を組み合わせた時刻(RFC3339 形式)。timeZone でタイムゾーンが明示的に指定されていない限り、タイムゾーン オフセットが必要です。 書き込み可能
end.timeZone string 時刻が指定されるタイムゾーン。(IANA タイムゾーン データベース名の形式(「Europe/Zurich」など))。定期的な予定の場合、このフィールドは必須です。定期的な予定を展開するタイムゾーンを指定します。単一のイベントの場合、このフィールドはオプションであり、イベントの開始/終了にカスタムのタイムゾーンを示します。 書き込み可能
extendedProperties.private object このカレンダーに表示される予定のコピーに固有のプロパティ。 書き込み可能
extendedProperties.shared object 他の参加者のカレンダー上の予定のコピー間で共有されるプロパティ。 書き込み可能
focusTimeProperties nested object サイレント モードのイベントデータ。eventTypefocusTime の場合に使用されます。 書き込み可能
gadget.display string ガジェットの表示モード。非推奨です。有効な値は次のとおりです。
  • icon」 - ガジェットはカレンダー ビューで予定のタイトルの横に表示されます。
  • chip」 - イベントをクリックするとガジェットが表示されます。
書き込み可能
gadget.height integer ピクセル単位のガジェットの高さです。高さには 0 より大きい整数を指定してください。(省略可)廃止されました。 書き込み可能
gadget.preferences object 設定] をタップします。 書き込み可能
gadget.title string ガジェットのタイトル。廃止されました。 書き込み可能
gadget.type string ガジェットのタイプ。廃止されました。 書き込み可能
gadget.width integer ガジェットの幅(ピクセル単位)。幅には 0 より大きい整数を指定してください。(省略可)廃止されました。 書き込み可能
guestsCanInviteOthers boolean 主催者以外の参加者が他のユーザーを予定に招待できるかどうか。(省略可)デフォルト値は True です。 書き込み可能
guestsCanModify boolean 主催者以外の参加者が予定を変更できるかどうか。(省略可)デフォルトは False です。 書き込み可能
guestsCanSeeOtherGuests boolean 予定の参加者を主催者以外の参加者に表示するかどうか。(省略可)デフォルト値は True です。 書き込み可能
location string 自由形式のテキストで表されるイベントの地理的位置。省略可。 書き込み可能
organizer object 予定の主催者。主催者が参加者でもある場合、attendees 内の別のエントリで organizer フィールドが True に設定されます。主催者を変更するには、移動操作を使用します。読み取り専用です(イベントをインポートする場合を除く)。 書き込み可能
organizer.displayName string 主催者の名前(ある場合)。 書き込み可能
organizer.email string 主催者のメールアドレス(ある場合)。RFC5322 に準拠した有効なメールアドレスを指定する必要があります。 書き込み可能
originalStartTime.date date 終日イベントの場合は、「yyyy-mm-dd」形式の日付。 書き込み可能
originalStartTime.dateTime datetime 日付と時刻を組み合わせた時刻(RFC3339 形式)。timeZone でタイムゾーンが明示的に指定されていない限り、タイムゾーン オフセットが必要です。 書き込み可能
originalStartTime.timeZone string 時刻が指定されるタイムゾーン。(IANA タイムゾーン データベース名の形式(「Europe/Zurich」など))。定期的な予定の場合、このフィールドは必須です。定期的な予定を展開するタイムゾーンを指定します。単一のイベントの場合、このフィールドはオプションであり、イベントの開始/終了にカスタムのタイムゾーンを示します。 書き込み可能
outOfOfficeProperties nested object 不在のイベントデータ。eventTypeoutOfOffice の場合に使用されます。 書き込み可能
recurrence[] list RFC5545 で指定されている、定期的なイベントの RRULE、EXRULE、RDATE、EXDATE 行のリスト。なお、このフィールドでは DTSTART 行と DTEND 行は使用できません。イベントの開始時間と終了時間は、start フィールドと end フィールドで指定します。1 つの予定または定期的な予定のインスタンスでは省略されます。 書き込み可能
reminders.overrides[] list デフォルトの通知を使用していない場合は、その予定に固有の通知が表示されます。設定されていない場合は、その予定にリマインダーが設定されていないことを示します。オーバーライドのリマインダーは 5 つまで設定できます。 書き込み可能
reminders.overrides[].method string このリマインダーで使用されるメソッド。有効な値は次のとおりです。
  • email」 - リマインダーがメールで送信されます。
  • popup」- リマインダーは UI ポップアップを介して送信されます。

リマインダーを追加する場合は必須です。

書き込み可能
reminders.overrides[].minutes integer リマインダーがトリガーされる、イベント開始前の分数。有効な値は 0 ~ 40320(4 週間分)です。

リマインダーを追加する場合は必須です。

書き込み可能
reminders.useDefault boolean カレンダーのデフォルトのリマインダーを予定に適用するかどうかを指定します。 書き込み可能
sequence integer iCalendar に基づくシーケンス番号。 書き込み可能
source.title string ウェブページのタイトルやメールの件名など、ソースのタイトル。 書き込み可能
source.url string リソースを指すソースの URL。URL スキームは HTTP または HTTPS にする必要があります。 書き込み可能
start.date date 終日イベントの場合は、「yyyy-mm-dd」形式の日付。 書き込み可能
start.dateTime datetime 日付と時刻を組み合わせた時刻(RFC3339 形式)。timeZone でタイムゾーンが明示的に指定されていない限り、タイムゾーン オフセットが必要です。 書き込み可能
start.timeZone string 時刻が指定されるタイムゾーン。(IANA タイムゾーン データベース名の形式(「Europe/Zurich」など))。定期的な予定の場合、このフィールドは必須です。定期的な予定を展開するタイムゾーンを指定します。単一のイベントの場合、このフィールドはオプションであり、イベントの開始/終了にカスタムのタイムゾーンを示します。 書き込み可能
status string イベントのステータス。(省略可)有効な値は次のとおりです。
  • confirmed」 - イベントが確定しました。これがデフォルトのステータスです。
  • tentative」 - イベントは暫定的に確定しています。
  • cancelled」 - 予定はキャンセル(削除)されています。list メソッドは、syncToken または updatedMin が指定されている場合、または showDeleted フラグが true に設定されている場合にのみ、増分同期の場合にのみ、キャンセルされたイベントを返します。get メソッドは、常にこれらを返します。

    キャンセル ステータスは、イベントの種類に応じて 2 つの異なる状態です。

    1. キャンセルされていない定期的なイベントの例外がキャンセルされた場合は、このインスタンスがユーザーに表示されなくなることを示します。クライアントは、親の定期イベントの存続期間中、これらのイベントを保存する必要があります。

      キャンセルされた例外では、idrecurringEventIdoriginalStartTime フィールドの値のみが入力されることが保証されます。他のフィールドは空欄でもかまいません。

    2. その他のキャンセルされた予定はすべて、削除された予定を表します。クライアントは、ローカルに同期されたコピーを削除する必要があります。このようなキャンセルされたイベントは、最終的には消失します。そのため、無期限で利用できることを前提としないでください。

      削除されたイベントについては、id フィールドにのみ値が入力されます。

    主催者のカレンダーでは、キャンセルされた予定に引き続き予定の詳細(概要、場所など)が表示されるため、復元(削除を取り消す)できます。同様に、ユーザーが招待され、手動で削除した予定にも、引き続き詳細情報が表示されます。ただし、showDeleted を false に設定した増分同期リクエストでは、これらの詳細情報は返されません。

    移動操作などで予定の主催者が変更された場合、元の主催者が参加者リストにない場合は、その予定の主催者がキャンセルされ、id フィールドにのみ入力されることが保証されます。

書き込み可能
summary string 予定のタイトル。 書き込み可能
transparency string その予定がカレンダー上の時間をブロックしているかどうか。(省略可)有効な値は次のとおりです。
  • opaque」 - デフォルト値。その予定によってカレンダーの時間がブロックされる。これは、カレンダーの UI で [予定を表示] を [予定あり] に設定する場合と同じです。
  • transparent」 - その予定によってカレンダーの時間がブロックされていない。これは、カレンダーの UI で [自分を表示] を [予定なし] に設定する場合と同じです。
書き込み可能
visibility string イベントの公開設定。(省略可)有効な値は次のとおりです。
  • default」 - カレンダーの予定にデフォルトの公開設定を使用します。これがデフォルト値です。
  • public」 - この予定は一般公開されており、予定の詳細はカレンダーのすべての読者に表示されます。
  • private」 - この予定は限定公開で、予定の詳細を閲覧できるのは予定の参加者のみです。
  • confidential」 - この予定は限定公開です。この値は互換性の理由から指定されています。
書き込み可能

レスポンス

成功すると、このメソッドはレスポンスの本文でイベント リソースを返します。

注: このメソッドで使用可能なコード例では、サポートされているプログラミング言語すべての例を示しているわけではありません(サポートされている言語の一覧については、クライアント ライブラリ ページをご覧ください)。

Java

Java クライアント ライブラリを使用します。

import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventAttendee;
import com.google.api.services.calendar.model.EventDateTime;
import com.google.api.client.util.DateTime;

import java.util.Date;
// ...

// Initialize Calendar service with valid OAuth credentials
Calendar service = new Calendar.Builder(httpTransport, jsonFactory, credentials)
    .setApplicationName("applicationName").build();

// Create and initialize a new event (could also retrieve an existing event)
Event event = new Event();
event.setICalUID("originalUID");

Event.Organizer organizer = new Event.Organizer();
organizer.setEmail("organizerEmail");
organizer.setDisplayName("organizerDisplayName");
event.setOrganizer(organizer);

ArrayList<EventAttendee> attendees = new ArrayList<EventAttendee>();
attendees.add(new EventAttendee().setEmail("attendeeEmail"));
// ...
event.setAttendees(attendees);

Date startDate = new Date();
Date endDate = new Date(startDate.getTime() + 3600000);
DateTime start = new DateTime(startDate, TimeZone.getTimeZone("UTC"));
event.setStart(new EventDateTime().setDateTime(start));
DateTime end = new DateTime(endDate, TimeZone.getTimeZone("UTC"));
event.setEnd(new EventDateTime().setDateTime(end));

// Import the event into a calendar
Event importedEvent = service.events().calendarImport('primary', event).execute();

System.out.println(importedEvent.getId());

Python

Python クライアント ライブラリを使用します。

event = {
  'summary': 'Appointment',
  'location': 'Somewhere',
  'organizer': {
    'email': 'organizerEmail',
    'displayName': 'organizerDisplayName'
  },
  'start': {
    'dateTime': '2011-06-03T10:00:00.000-07:00'
  },
  'end': {
    'dateTime': '2011-06-03T10:25:00.000-07:00'
  },
  'attendees': [
    {
      'email': 'attendeeEmail',
      'displayName': 'attendeeDisplayName',
    },
    # ...
  ],
  'iCalUID': 'originalUID'
}

imported_event = service.events().import_(calendarId='primary', body=event).execute()

print imported_event['id']

PHP

PHP クライアント ライブラリを使用します。

$event = new Google_Service_Calendar_Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime('2011-06-03T10:00:00.000-07:00');
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime('2011-06-03T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new Google_Service_Calendar_EventAttendee();
$attendee1->setEmail('attendeeEmail');
// ...
$attendees = array($attendee1,
                   // ...,
                  );
$event->attendees = $attendees;
$organizer = new Google_Service_Calendar_EventOrganizer();
$organizer->setEmail('organizerEmail');
$organizer->setDisplayName('organizerDisplayName');
$event->setOrganizer($organizer);
$event->setICalUID('originalUID');
$importedEvent = $service->events->import('primary', $event);

echo $importedEvent->getId();

Ruby

Ruby クライアント ライブラリを使用します。

event = Google::Apis::CalendarV3::Event.new(
  summary: 'Appointment',
  location: 'Somewhere',
  organizer: {
    email: 'organizerEmail',
    display_name: 'organizerDisplayName'
  },
  start: {
    date_time: '2011-06-03T10:00:00.000-07:00'
  },
  end: {
    date_time: '2011-06-03T10:25:00.000-07:00'
  },
  attendees: [
    {
      email: 'attendeeEmail',
      display_name: 'attendeeDisplayName',
    },
    # ...
  ],
  i_cal_uid: 'originalUID'
)
result = client.import_event('primary', event)
print result.id

試してみよう:

以下の API Explorer を使用して、ライブデータに対してこのメソッドを呼び出し、レスポンスを確認してください。