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입니다. 사용 가능한 값: 0~1.
supportsAttachments boolean 작업을 수행하는 API 클라이언트에서 이벤트 첨부파일을 지원하는지 여부입니다. 선택사항. 기본값은 False입니다.

확인할 내용

이 요청에는 다음 범위 중 하나 이상을 포함한 승인이 필요합니다.

범위
https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/calendar.events

자세한 내용은 인증 및 승인 페이지를 참고하세요.

요청 본문

요청 본문에서는 다음과 같은 속성을 사용하여 이벤트 리소스를 제공합니다.

속성 이름 설명 메모
필수 속성
end nested object 이벤트 종료 시간 (제외)입니다. 반복 이벤트의 경우 첫 번째 인스턴스의 종료 시간입니다.
iCalUID string RFC5545에 정의된 이벤트 고유 식별자입니다. 캘린더 시스템 전체에서 이벤트를 고유하게 식별하는 데 사용되며 import 메서드를 통해 이벤트를 가져올 때 제공해야 합니다.

iCalUIDid는 동일하지 않으며 이벤트 생성 시 둘 중 하나만 제공해야 합니다. 의미 체계의 한 가지 차이점은 반복 이벤트에서 한 이벤트의 모든 어커런스는 서로 다른 id을 가지고 있고 모두 동일한 iCalUID을 공유한다는 것입니다. iCalUID를 사용하여 이벤트를 검색하려면 iCalUID 매개변수를 사용하여 events.list 메서드를 호출합니다. id를 사용하여 이벤트를 검색하려면 events.get 메서드를 호출합니다.

start nested object 이벤트의 시작 시간 (포함)입니다. 반복 이벤트의 경우 첫 번째 인스턴스의 시작 시간입니다.
선택 속성
anyoneCanAddSelf boolean 누구나 일정에 자신을 초대할 수 있는지 여부 (지원 중단됨) 선택사항. 기본값은 False입니다. 쓰기 가능
attachments[].fileUrl string 첨부파일의 URL 링크입니다.

Google Drive 첨부파일 추가에는 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 시간대 데이터베이스 이름 형식(예: '유럽/취리히')입니다. 반복 일정의 경우 이 입력란은 필수이며 반복 항목이 확장되는 시간대를 지정합니다. 단일 이벤트의 경우 이 필드는 선택사항이며 이벤트 시작/종료의 맞춤 시간대를 나타냅니다. 쓰기 가능
extendedProperties.private object 이 캘린더에 표시되는 일정 사본의 비공개 속성입니다. 쓰기 가능
extendedProperties.shared object 다른 참석자의 캘린더에서 일정 사본 간에 공유되는 속성입니다. 쓰기 가능
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 이벤트 주최자입니다. 주최자도 참석자인 경우 organizer에 True로 설정된 attendees의 개별 항목이 표시됩니다. 주최자를 변경하려면 이동 작업을 사용하세요. 읽기 전용입니다(일정 가져오기 제외). 쓰기 가능
organizer.displayName string 주최자의 이름입니다(있는 경우). 쓰기 가능
organizer.email string 주최자의 이메일 주소입니다(있는 경우). RFC5322에 따라 유효한 이메일 주소여야 합니다. 쓰기 가능
originalStartTime.date date 종일 일정인 경우 'yyyy-mm-dd' 형식의 날짜입니다. 쓰기 가능
originalStartTime.dateTime datetime 날짜/시간을 종합한 값으로, RFC3339에 따라 형식이 지정된 시간입니다. timeZone에 시간대를 명시적으로 지정하지 않은 경우 시간대 오프셋이 필요합니다. 쓰기 가능
originalStartTime.timeZone string 시간이 지정된 시간대입니다. IANA 시간대 데이터베이스 이름 형식(예: '유럽/취리히')입니다. 반복 일정의 경우 이 입력란은 필수이며 반복 항목이 확장되는 시간대를 지정합니다. 단일 이벤트의 경우 이 필드는 선택사항이며 이벤트 시작/종료의 맞춤 시간대를 나타냅니다. 쓰기 가능
recurrence[] list RFC5545에 지정된 반복 일정의 RRULE, EXRULE, RDATE, EXDATE 행 목록입니다. 이 필드에는 DTSTART 및 DTEND 행이 허용되지 않습니다. 이벤트 시작 및 종료 시간은 startend 필드에 지정됩니다. 단일 이벤트 또는 반복 이벤트의 경우 이 필드는 생략됩니다. 쓰기 가능
reminders.overrides[] list 일정에서 기본 알림을 사용하지 않는 경우 일정과 관련된 알림이 표시되며, 설정하지 않은 경우 이 일정에 설정된 알림이 없음을 나타냅니다. 재정의 알림의 최대 개수는 5개입니다. 쓰기 가능
reminders.overrides[].method string 이 알림에서 사용하는 메서드입니다. 가능한 값은 다음과 같습니다.
  • "email" - 알림이 이메일로 전송됩니다.
  • "popup" - UI 팝업을 통해 알림이 전송됩니다.

알림을 추가할 때 필요합니다.

쓰기 가능
reminders.overrides[].minutes integer 알림이 시작되기 전에 이벤트가 시작되기까지의 시간(분)입니다. 유효한 값은 0~40,320 (분, 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 시간대 데이터베이스 이름 형식(예: '유럽/취리히')입니다. 반복 일정의 경우 이 입력란은 필수이며 반복 항목이 확장되는 시간대를 지정합니다. 단일 이벤트의 경우 이 필드는 선택사항이며 이벤트 시작/종료의 맞춤 시간대를 나타냅니다. 쓰기 가능
status string 이벤트의 상태입니다. 선택사항. 가능한 값은 다음과 같습니다.
  • 'confirmed' - 이벤트가 확인되었습니다. 기본 상태입니다.
  • 'tentative' - 이벤트가 미정으로 확인되었습니다.
  • 'cancelled' - 이벤트가 취소 (삭제)되었습니다. list 메서드는 증분 동기화 (syncToken 또는 updatedMin이 지정된 경우) 또는 showDeleted 플래그가 true로 설정된 경우에만 취소된 이벤트를 반환합니다. get 메서드는 항상 결과를 반환합니다.

    취소된 상태는 이벤트 유형에 따라 두 가지 상태를 나타냅니다.

    1. 취소되지 않은 반복 일정에 대한 취소된 예외는 이 인스턴스를 더 이상 사용자에게 표시해서는 안 됨을 나타냅니다. 클라이언트는 상위 반복 이벤트의 전체 기간 동안 이러한 이벤트를 저장해야 합니다.

      취소된 예외에는 id, recurringEventId, originalStartTime 필드의 값만 입력됩니다. 다른 필드는 비어 있을 수 있습니다.

    2. 취소된 다른 모든 이벤트는 삭제된 일정을 나타냅니다. 클라이언트는 로컬로 동기화된 사본을 삭제해야 합니다. 취소된 이벤트는 결국 사라지게 되므로 무한정 사용할 수 있으니 의존하지 마시기 바랍니다.

      삭제된 이벤트는 id 필드만 채워집니다.

    주최자의 캘린더에서 취소된 일정은 복원 (삭제 취소)될 수 있도록 일정 세부정보 (요약, 위치 등)가 계속 표시됩니다. 마찬가지로 사용자를 초대하고 수동으로 삭제한 이벤트는 계속해서 세부정보를 제공합니다. 그러나 showDeleted가 false로 설정된 증분 동기화 요청은 이러한 세부정보를 반환하지 않습니다.

    일정 주최자 (예: 이동 작업)가 변경되고 원래 주최자가 참석자 목록에 없는 경우에는 취소된 일정만 남게 되며 id 입력란만 채워집니다.

쓰기 가능
summary string 이벤트의 제목입니다. 쓰기 가능
transparency string 일정이 캘린더의 시간을 차단하는지 여부 선택사항. 가능한 값은 다음과 같습니다.
  • 'opaque' - 기본값 일정이 캘린더에 있는 시간을 차단합니다. Calendar UI에서 내 상태Busy로 설정하는 것과 같습니다.
  • 'transparent' - 일정이 캘린더에서 시간을 차단하지 않습니다. 캘린더 UI에서 내 상태사용 가능으로 설정하는 것과 같습니다.
쓰기 가능
visibility string 이벤트의 공개 상태입니다. 선택사항. 가능한 값은 다음과 같습니다.
  • 'default' - 캘린더 일정의 기본 공개 상태를 사용합니다. 기본값입니다.
  • 'public' - 일정이 공개되며 캘린더의 모든 리더가 일정 세부정보를 볼 수 있음
  • 'private' - 일정이 비공개이며 일정 참석자만 일정 세부정보를 볼 수 있습니다.
  • 'confidential' - 비공개 일정입니다. 이 값은 호환성을 위해 제공됩니다.
쓰기 가능

응답

요청에 성공할 경우 이 메서드는 응답 본문에 Events 리소스를 반환합니다.

참고: 이 메서드에 제공되는 코드 예시가 지원되는 모든 프로그래밍 언어를 나타내는 것은 아닙니다. 지원되는 언어 목록은 클라이언트 라이브러리 페이지를 참조하세요.

자바

자바 클라이언트 라이브러리를 사용합니다.

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 탐색기를 사용하여 실시간 데이터를 대상으로 이 메소드를 호출하고 응답을 확인해 보세요.