이 페이지에서는 eventType 속성과 Google Calendar API에서 사용할 수 있는 이벤트 유형의 사양을 설명합니다.
Google Calendar를 사용하면 사용자가 일반 이벤트는 물론 특정 사용 사례를 위해 설계되고 맞춤 속성이 있는 이벤트를 만들 수 있습니다.
API의 다음 위치에서 이벤트 유형을 확인할 수 있습니다.
- 모든 이벤트는
eventType을 반환합니다. - 이벤트 리소스를 만들거나 업데이트할 때
eventType을 설정합니다. 설정하지 않으면, API에서'default'를 사용합니다. eventTypes호출에서events.list를 지정하여 특정 유형의 이벤트를 나열합니다. 유형을 지정하지 않으면 API에서 모든 이벤트 유형을 반환합니다.eventTypes호출에서events.watch를 지정하여 특정 유형의 이벤트에 대한 업데이트를 구독합니다. 유형을 지정하지 않으면 요청이 모든 이벤트 유형을 구독합니다.
기본 이벤트
default 이벤트 유형이 있는 이벤트는 Calendar API의 기본 리소스 중 하나로 생성되고 사용됩니다. 이벤트의 추가 맞춤설정을 위해 다양한
속성
을 지원합니다.
Calendar 이벤트 작업을 시작하려면 이벤트 만들기를 참고하세요.
생일
생일은 연간 반복되는 특별한 종일 이벤트입니다.
사용자는 Calendar에서 생일 이벤트를 수동으로 만들 수 있습니다. 또한 사용자가 Google 주소록에 연락처를 추가하고 생일 및 기타 중요한 날짜를 포함하면 생일 정보가 Calendar와 동기화됩니다. 사용자의 생일도 Google 계정 프로필에서 Calendar로 동기화됩니다.
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필드는 정확히 하루 동안 지속되는 종일 이벤트를 정의해야 합니다.visibility필드 값은'private'이어야 합니다.transparency필드 값은'transparent'이어야 합니다.- 연간 반복이 있어야 합니다. 즉,
recurrence필드가'RRULE:FREQ=YEARLY'여야 합니다. 2월 29일에 해당하는 생일 이벤트에는 다음 반복 규칙이 있어야 합니다.'RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1'. colorId,summary, andreminders가 있을 수 있습니다.-
birthdayProperties가 있을 수 있습니다. 지정된 경우type은'birthday'여야 하며customTypeName과contact는 모두 비어 있어야 합니다. - 다른 이벤트 속성은 있을 수 없습니다.
API를 사용하면 events.update
및 events.patch 메서드를 사용하여 생일
이벤트의
colorId,
summary, 및
reminders를 업데이트할 수 있습니다.
start 및
end 필드를 업데이트하여 이벤트 날짜를 변경할 수도 있습니다. 이 경우 새 값은 정확히 하루 동안 지속되는 종일 이벤트를 정의해야 합니다. 이벤트가
contact에 연결되어 있거나
type이
'self'인 경우 생일 이벤트의 시간 세부정보를 업데이트할 수 없습니다.
Calendar API에서는 맞춤
birthdayProperties로 생일 이벤트를 만들거나
이러한 속성을 업데이트할 수 없습니다. 중요한 날짜는
People API로 수정할 수 있으며 변경사항은
Calendar와 동기화됩니다. 마찬가지로 사용자는
Google 계정 프로필에서 자신의 생일을 수정할 수 있으며 Calendar와 동기화됩니다.
지원되지 않는 방식으로 생일을 만들거나 업데이트하려고 하는 요청은 실패합니다. 이 경우 오류 메시지를 검사하여 문제를 파악합니다.
API는 생일 이벤트에 events.import 작업을 지원하지만 이벤트는 기본 이벤트로 가져옵니다. 즉, eventType은
'default'가 됩니다.
API는 Calendar의 생일 이벤트 변경사항을 구독하기 위한 events.watch 메서드
를 지원합니다.
eventTypes를
'birthday'로 설정하여 생일 이벤트에 대한 업데이트를 구독할 수 있습니다. 유형을 지정하지 않으면 요청이 생일을 포함한 모든 이벤트 유형을 구독합니다.
Calendar API의
events.delete 메서드를 사용하여 생일 이벤트를 삭제할 수 있습니다. Calendar에서 생일 이벤트를 삭제해도
Google 주소록 또는
Google 계정 프로필의 데이터에는 영향을 미치지 않습니다.
events.move 또는
events.update 메서드를 사용하여 생일 이벤트의 주최자를 변경하는 것은 지원되지 않습니다.
Gmail에 포함된 일정
Gmail에서 자동으로 생성된 이벤트에는
'fromGmail' 이벤트 유형이 있습니다.
Calendar API에서는
events.insert 메서드를 사용하여 이 이벤트 유형을 만들 수 없습니다.
API를 사용하면
colorId,
reminders,
visibility,
transparency,
status,
attendees,
private,
및 shared
확장 속성을 events.update
및 events.patch 메서드를 사용하여 업데이트할 수 있습니다.
API는 Gmail에서 이벤트를 읽기 위한 events.get 및
events.list 메서드를 지원합니다.
eventTypes를
'fromGmail'로 설정하여 Gmail에서 생성된 이벤트만 나열할 수 있습니다. 유형을 지정하지 않으면 Gmail에 포함된 일정이 다른 모든 이벤트 유형과 함께 나열됩니다.
API는 Calendar의 Gmail에 포함된 일정 변경사항을 구독하기 위한 events.watch
메서드를 지원합니다. 유형을 지정하지 않으면 요청이
지정됩니다. 요청은 'fromGmail'을 포함한 모든 이벤트 유형을 구독합니다.
Calendar API의
events.delete 메서드
를 사용하여 Gmail에 포함된 일정을 삭제할 수 있습니다.
events.move 또는
events.update 메서드를 사용하여 Gmail에 포함된 일정의 주최자를 변경하는 것은 지원되지 않습니다.
방해 금지 시간, 부재중, 근무 위치
Calendar API를 사용하여 Calendar 사용자의 상태를 표시하는 이벤트를 만들고 관리할 수 있습니다.
이러한 기능은 기본 캘린더와 일부 Calendar 사용자에게만 제공됩니다. 자세한 내용은 방해 금지 시간, 부재중, 근무 위치 이벤트 관리를 참고하세요.
Apps Script의 이벤트 유형 살펴보기
Apps Script는 Google Workspace와 통합되는 비즈니스 애플리케이션을 빌드할 수 있는 JavaScript 기반 클라우드 스크립팅 언어입니다. 스크립트는 브라우저 기반 코드 편집기에서 개발되며 Google 서버에 저장되고 실행됩니다. Apps Script를 사용하여 Calendar API에 요청을 보내는 방법을 알아보려면 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 프로젝트로 전환을 참고하세요. 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`events.list를 호출하여 이벤트 ID를 가져올 수 있습니다.
코드 샘플 실행
- 코드 편집기 위에서 드롭다운 메뉴에서 실행할 함수를 선택하고 실행 을 클릭합니다.
- 스크립트를 처음 실행하면 액세스 권한을 부여하라는 메시지가 표시됩니다. Apps Script가 캘린더에 액세스하도록 검토하고 허용합니다.
- 창 하단에 표시되는 실행 로그 에서 스크립트 실행 결과를 검사할 수 있습니다.