이벤트 유형

이 페이지에서는 Google Calendar API에서 사용할 수 있는 이벤트 유형의 eventType 속성과 사양을 설명합니다.

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: 이 특별 이벤트가 연결된 연락처의 리소스 이름입니다(있는 경우). 이 값은 '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, summary, reminders를 사용할 수 있습니다.
  • birthdayProperties이 있을 수 있습니다. 지정된 경우 type'birthday'이어야 하고 customTypeNamecontact은 비어 있어야 합니다.
  • 다른 이벤트 속성이 있을 수 없습니다.

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

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

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

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를 사용하면 updatepatch 메서드를 사용하여 colorId, reminders, visibility, transparency, status, attendees, private, shared 확장 속성을 업데이트할 수 있습니다.

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

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

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

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