이벤트 유형

이 페이지에서는 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, and list 메서드를 지원합니다. eventTypes'birthday'로 설정하여 생일 이벤트만 나열할 수 있습니다. 유형을 지정하지 않으면 생일이 다른 모든 이벤트 유형과 함께 나열됩니다.

반환된 Event 객체에서 birthdayProperties 필드를 검사하여 이 특별한 이벤트에 관한 자세한 내용을 확인하세요. birthdayProperties 에는 다음과 같은 필드가 있습니다.

  • type: 생일, 기념일 또는 기타 중요한 날짜와 같은 이 특별한 이벤트의 유형입니다.
  • customTypeName: 사용자가 지정한 이 특별한 이벤트의 라벨입니다. type'custom'으로 설정된 경우에 채워집니다.
  • contact: 이 특별한 이벤트가 연결된 연락처의 리소스 이름입니다(있는 경우). 이 이름 은 'people/c12345' 형식이며 연락처 세부정보 를 People API에서 가져오는 데 사용할 수 있습니다.

API를 사용하면 다음 사양으로 insert 메서드를 사용하여 생일 이벤트를 만들 수 있습니다.

  • eventType'birthday'로 설정됩니다.
  • startend 필드는 정확히 하루 동안 지속되는 종일 일정을 정의해야 합니다.
  • visibility 필드 값 은 'private'이어야 합니다.
  • transparency 필드 값 'transparent'여야 합니다.
  • 연간 반복이 있어야 합니다. 즉, recurrence 필드가 'RRULE:FREQ=YEARLY'여야 합니다. 2월 29일에 해당하는 생일 이벤트에는 다음 반복 규칙이 있어야 합니다. 'RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1'.
  • colorId, summaryreminders가 있을 수 있습니다.
  • birthdayProperties가 있을 수 있습니다. 지정된 경우 type'birthday'여야 하며 customTypeNamecontact 는 모두 비어 있어야 합니다.
  • 다른 이벤트 속성은 있을 수 없습니다.

API를 사용하면 updatepatch 메서드를 사용하여 생일 이벤트의 colorId, summaryreminders를 업데이트할 수 있습니다. startend 필드를 업데이트하여 이벤트 날짜를 변경할 수도 있습니다. 이 경우 새 값은 정확히 하루 동안 지속되는 종일 일정을 정의해야 합니다. 이벤트가 contact에 연결되어 있거나 type'self'인 경우 생일 이벤트의 시간 세부정보를 업데이트할 수 없습니다.

Google Calendar API에서는 맞춤 birthdayProperties로 생일 이벤트를 만들거나 이러한 속성을 업데이트할 수 없습니다. 중요한 날짜는 People API로 수정할 수 있으며 변경사항은 Google Calendar와 동기화됩니다. 마찬가지로 사용자는 Google 계정 프로필에서 자신의 생일을 수정할 수 있으며 Google Calendar와 동기화됩니다.

지원되지 않는 방식으로 생일을 만들거나 업데이트하려고 하는 요청은 실패합니다. 이 경우 오류 메시지를 검사하여 문제를 파악하세요.

API는 생일 이벤트에 대한 import 작업 을 지원하지만 이벤트는 기본 이벤트로 가져옵니다. 즉, eventType'default'가 됩니다.

API는 Google Calendar의 생일 이벤트 변경사항을 구독하기 위한 watch 메서드 를 지원합니다. eventTypes'birthday'로 설정하여 생일 이벤트에 대한 업데이트를 구독할 수 있습니다. 유형을 지정하지 않으면 생일을 포함한 모든 이벤트 유형이 구독됩니다.

생일 이벤트는 delete method of the Google Calendar API를 사용하여 삭제할 수 있습니다. Google Calendar에서 생일 이벤트를 삭제해도 Google 주소록 또는 Google 계정 프로필의 데이터에는 영향을 미치지 않습니다.

move 또는 update 메서드를 사용하여 생일 이벤트의 주최자를 변경하는 것은 지원되지 않습니다.

Gmail에 포함된 일정

Gmail에서 자동으로 생성된 이벤트에는 'fromGmail' 이벤트 유형이 있습니다.

Google Calendar API에서는 insert 메서드를 사용하여 이 이벤트 유형을 만들 수 없습니다.

API를 사용하면 colorId, reminders, visibility, transparency, status, attendees, privateshared 확장 속성을 updatepatch 메서드를 사용하여 업데이트할 수 있습니다.

API는 getlist 메서드를 지원합니다. eventTypes'fromGmail'로 설정하여 Gmail에서 생성된 이벤트만 나열할 수 있습니다. 유형을 지정하지 않으면 Gmail에 포함된 일정이 다른 모든 이벤트 유형과 함께 나열됩니다.

API는 Google Calendar의 Gmail에 포함된 일정 변경사항을 구독하기 위한 watch 메서드 를 지원합니다. 유형을 지정하지 않으면 을 포함한 모든 이벤트 유형이 구독됩니다.'fromGmail'

Gmail에 포함된 일정은 delete 메서드를 사용하여 Google Calendar API에서 삭제할 수 있습니다.

move 또는 update 메서드를 사용하여 Gmail에 포함된 일정의 주최자를 변경하는 것은 지원되지 않습니다.

방해 금지 시간, 부재중, 근무 위치

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 Calendar API를 Google Apps Script의 고급 서비스로 사용하여 이벤트를 읽고 관리하는 방법을 설명합니다. 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. 창 하단에 표시되는 실행 로그 에서 스크립트 실행 결과를 검사할 수 있습니다.