이 페이지에서는 eventType
속성과 Google Calendar API에서 사용할 수 있는 이벤트 유형의 사양을 설명합니다.
Google Calendar를 사용하면 일반 일정뿐만 아니라 특정 사용 사례에 맞게 설계된 맞춤 속성 이벤트도 만들 수 있습니다.
이벤트 유형은 API의 다음 위치에서 확인할 수 있습니다.
- 모든 이벤트는
eventType
과 함께 반환됩니다. - 이벤트 리소스를 만들거나 업데이트할 때
eventType
를 설정해야 합니다. 설정하지 않으면'default'
유형이 사용됩니다. eventTypes
는 특정 유형의 이벤트를 나열하기 위해Events:list
호출에 지정할 수 있습니다. 유형을 지정하지 않으면 모든 이벤트 유형이 반환됩니다.eventTypes
는 특정 유형의 이벤트에 대한 업데이트를 구독하기 위해Events:watch
호출에서 지정할 수 있습니다. 유형을 지정하지 않으면 요청으로 인해 모든 이벤트 유형이 구독됩니다.
기본 이벤트
default
이벤트 유형이 있는 일정은 Google Calendar API의 기본 리소스 중 하나로 생성되고 사용됩니다. 이벤트를 추가로 맞춤설정하는 데 사용할 수 있는 다양한 속성을 지원합니다.
Google Calendar 일정을 사용하려면 일정 만들기를 참고하세요.
생일
생일은 매년 반복되는 특별한 종일 일정입니다.
사용자는 Google Calendar에서 생일 일정을 직접 만들 수 있습니다. 또한 사용자가 사용자를 추가하고 Google 주소록에 생일 및 기타 중요한 날짜를 포함하면 생일 정보가 Google Calendar와 동기화됩니다. 사용자의 생일도 Google 계정 프로필에서 Google Calendar로 동기화됩니다.
Google Calendar API는 생일 이벤트를 읽는 get
, instances
, list
메서드를 지원합니다. eventTypes
를 'birthday'
로 설정하면 생일 이벤트만 표시됩니다. 유형을 지정하지 않으면 생일이 다른 모든 이벤트 유형과 함께 표시됩니다.
반환된 Event
객체에서 birthdayProperties
필드를 검사하여 이 특수 이벤트에 관한 자세한 내용을 확인합니다. birthdayProperties
에는 다음과 같은 필드가 있습니다.
type
: 생일, 기념일 또는 기타 중요한 날짜 등 특별한 이벤트의 유형입니다.customTypeName
: 이 특별 이벤트에 대해 사용자가 지정한 라벨입니다.type
가'custom'
로 설정된 경우 채워집니다.contact
: 이 특별 이벤트가 연결된 연락처의 리소스 이름입니다(해당하는 경우). 이 ID는'people/c12345'
형식이며 People API에서 연락처 세부정보를 가져오는 데 사용할 수 있습니다.
이 API를 사용하면 다음 사양으로 insert
메서드를 사용하여 생일 이벤트를 만들 수 있습니다.
eventType
가'birthday'
로 설정됩니다.start
및end
필드는 정확히 하루 동안 지속되는 종일 이벤트를 정의해야 합니다.visibility
필드 값은'private'
여야 합니다.transparency
필드 값은'transparent'
여야 합니다.- 연간 반복이 있어야 합니다. 즉,
recurrence
필드는'RRULE:FREQ=YEARLY'
여야 합니다. 2월 29일에 해당하는 생일 이벤트에는 다음과 같은 반복 규칙이 적용되어야 합니다.'RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1'
. colorId
,summary
,reminders
가 있을 수 있습니다.birthdayProperties
를 보유할 수 있습니다. 지정된 경우type
은'birthday'
이어야 하며customTypeName
및contact
는 모두 비어 있어야 합니다.- 다른 이벤트 속성을 가질 수 없습니다.
이 API를 사용하면 update
및 patch
메서드를 사용하여 생일 이벤트의 colorId
, summary
, reminders
를 업데이트할 수 있습니다.
start
및 end
필드를 업데이트하여 일정 날짜를 변경할 수도 있습니다. 이 경우 새 값은 정확히 하루 동안 지속되는 전체 일정을 정의해야 합니다. 이벤트가 contact
에 연결되어 있거나 type
이 'self'
인 경우 생일 이벤트의 시간 세부정보를 업데이트할 수 없습니다.
Google Calendar API는 맞춤 birthdayProperties
로 생일 일정을 만들거나 이러한 속성을 업데이트하는 것을 허용하지 않습니다. 중요한 날짜는 People API로 수정할 수 있으며 변경사항은 Google Calendar와 동기화됩니다. 마찬가지로 사용자는 Google 계정 프로필에서 자신의 생일을 수정할 수 있으며, 생일은 Google Calendar와 동기화됩니다.
지원되지 않는 방식으로 생일을 만들거나 업데이트하려는 요청은 실패합니다. 이 경우 오류 메시지를 검사하여 문제를 파악합니다.
API는 생일 이벤트에 대한 import
작업을 지원하지만 이벤트는 기본 이벤트로 가져옵니다. 즉, eventType
는 'default'
입니다.
이 API는 Google Calendar의 생일 이벤트 변경사항을 구독하는 watch
메서드를 지원합니다.
eventTypes
를 'birthday'
로 설정하여 생일 이벤트 업데이트를 구독할 수 있습니다. 유형을 지정하지 않으면 생일을 비롯한 모든 이벤트 유형이 구독됩니다.
생일 일정은 Google Calendar API의 delete
메서드를 사용하여 삭제할 수 있습니다. Google Calendar에서 생일 이벤트를 삭제해도 Google 주소록 또는 Google 계정 프로필의 데이터에는 영향을 미치지 않습니다.
move
또는 update
메서드를 사용하여 생일 이벤트의 주최자를 변경하는 것은 지원되지 않습니다.
Gmail에 포함된 일정
Gmail에서 자동으로 생성된 일정에는 'fromGmail'
이벤트 유형이 있습니다.
Google Calendar API에서는 insert
메서드를 사용하여 이 이벤트 유형을 만들 수 없습니다.
이 API를 사용하면 update
및 patch
메서드를 사용하여 colorId
, reminders
, visibility
, transparency
, status
, attendees
, private
, shared
확장 속성을 업데이트할 수 있습니다.
이 API는 Gmail에서 이벤트를 읽는 get
및 list
메서드를 지원합니다. eventTypes
를 'fromGmail'
로 설정하면 Gmail에서 생성된 이벤트만 표시됩니다. 유형을 지정하지 않으면 Gmail의 일정이 다른 모든 일정 유형과 함께 표시됩니다.
이 API는 Google Calendar의 Gmail 일정 변경사항을 구독하는 watch
메서드를 지원합니다. 유형을 지정하지 않으면 'fromGmail'
를 비롯한 모든 이벤트 유형이 구독됩니다.
Gmail의 일정은 Google Calendar API의 delete
메서드를 사용하여 삭제할 수 있습니다.
Gmail에서 move
또는 update
메서드를 사용하여 일정의 주최자를 변경하는 것은 지원되지 않습니다.
집중 시간, 부재중, 근무 위치
Google Calendar API를 사용하여 Google Calendar 사용자의 상태를 보여주는 일정을 만들고 관리할 수 있습니다.
이 기능은 기본 캘린더에서만 사용할 수 있으며 일부 Google Calendar 사용자에게만 제공됩니다. 자세한 내용은 집중 시간, 부재중, 근무 위치 이벤트 관리를 참고하세요.
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 리소스 및 메서드의 전체 목록은 참조 문서를 참고하세요.
스크립트 만들기 및 설정
- script.google.com/create로 이동하여 스크립트를 만듭니다.
- 왼쪽 창의 서비스 옆에 있는 서비스 추가 를 클릭합니다 .
- Google Calendar API를 선택하고 추가를 클릭합니다.
- 사용 설정하면 API가 왼쪽 창에 표시됩니다. 편집기에서 Calendar 키워드를 사용하여 API에서 사용 가능한 메서드와 클래스를 나열할 수 있습니다.
(선택사항) Google Cloud 프로젝트 업데이트
각 Google Apps Script 프로젝트에는 연결된 Google Cloud 프로젝트가 있습니다. 스크립트는 Google Apps Script가 자동으로 만드는 기본 프로젝트를 사용할 수 있습니다. 맞춤 Google Cloud 프로젝트를 사용하려면 다른 표준 Cloud 프로젝트로 전환을 참고하세요. Google 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/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를 가져올 수 있습니다.
코드 샘플 실행
- 코드 편집기 위의 드롭다운 메뉴에서 실행할 함수를 선택하고 실행을 클릭합니다.
- 첫 번째 실행 시 액세스를 승인하라는 메시지가 표시됩니다. Apps Script가 캘린더에 액세스하도록 검토하고 허용합니다.
- 창 하단에 표시되는 Execution Log에서 스크립트 실행 결과를 검사할 수 있습니다.