Guide

Google Calendar CLI: 터미널에서 일정 관리하기

Google Calendar CLI로 일정 조회, 회의 생성, 가용 시간 확인, 상호 가능 시간 찾기를 터미널에서 수행하세요. Google Calendar의 외부 OAuth 심사는 인증된 스코프의 경우 최대 6주가 걸리며, 대부분의 캘린더 스크립트는 일정 조회, 빈 시간 찾기, 단일 회의 생성만 필요합니다.

Written by Aaron de Mello Senior Engineering Manager

Reviewed by Nick Barraclough

VerifiedCLI 3.1.1 · Google Calendar · last tested April 11, 2026

터미널에서 Google Calendar CLI를 어떻게 사용하나요?

한 번 인증한 후 nylas calendar list, nylas calendar events list, nylas calendar events create, nylas calendar availability find를 사용하면 됩니다. OAuth 자격 증명을 만들거나 Calendar API 코드를 작성할 필요 없이 터미널에서 Google Calendar 워크플로우를 사용할 수 있습니다.

터미널에서 Google Calendar를 관리하고 싶지만, 공식 방법은 단 하나의 일정을 다루기 전에 6단계를 거쳐야 합니다:

  1. Google Cloud Console에서 GCP 프로젝트 생성
  2. Google Calendar API 활성화
  3. OAuth 동의 화면 구성 (외부 앱은 Google의 브랜드 인증 심사를 거쳐야 하며, 민감한 스코프의 경우 최대 6주가 소요될 수 있음)
  4. OAuth 2.0 자격 증명 생성, 또는 도메인 전체 위임이 필요한 경우 서비스 계정 생성
  5. 캘린더 스코프 설정 (읽기/쓰기의 경우 https://www.googleapis.com/auth/calendar, 또는 더 제한된 calendar.events)
  6. 토큰 교환 및 API 호출을 위한 코드 작성

내부 앱의 경우 GCP 설정 자체는 빠릅니다. 비용이 많이 드는 부분은 비내부 앱에 대한 OAuth 심사와 사용자별 할당량입니다. Calendar API는 기본적으로 프로젝트당 분당 600개 요청으로 제한되어 있어 대규모 자동화에는 Google에 할당량 요청이 필요합니다. 터미널에서 다음 회의만 확인하고 싶은 사람에게는 지나치게 많은 설정입니다.

1. 설치 (이미 설정된 경우 건너뛰기)

Nylas CLI는 macOS와 Linux에서 Homebrew를 통해 30초 이내에 설치되며, 총 4가지 설치 방법을 지원합니다. 바이너리 크기는 약 25MB이고 설치 시 OS 아키텍처를 자동 감지하므로 설치 후 수동 구성이 필요 없습니다.

brew install nylas/nylas-cli/nylas를 실행하거나 시작하기 가이드에서 셸 스크립트, PowerShell, Go 설치 옵션을 확인하세요.

2. Google 인증

Nylas CLI를 통한 Google Calendar 인증은 단일 명령으로 완료되며, 기존 Google Calendar API에 필요한 6단계 GCP 프로젝트 설정을 대체합니다. CLI가 브라우저 기반 OAuth2 흐름을 열고, 인증 코드를 교환하며, 자격 증명을 로컬에 저장합니다. 이후 모든 호출에서 토큰 갱신이 자동으로 이루어집니다.

nylas auth login 명령은 Google에서 calendaremail 스코프를 요청합니다. 전체 흐름은 60초 이내에 완료되며, 저장된 토큰은 명시적으로 액세스를 취소할 때까지 터미널 세션 간에 유지됩니다.

nylas auth login

인증 후 캘린더를 조회하여 연결을 확인하세요. 성공적인 응답은 공유 캘린더 및 보조 캘린더를 포함하여 인증된 Google 계정에 표시되는 모든 캘린더를 보여줍니다. 대부분의 Google Workspace 사용자는 기본적으로 3-5개의 캘린더가 표시됩니다.

nylas calendar list

Google 캘린더가 이름과 ID로 나열되는 것을 확인할 수 있습니다.

3. 보조 캘린더와 소유권 이전

Google Calendar는 계정 수명 주기 이벤트 중 보조 캘린더를 기본 캘린더와 다르게 처리합니다. 직원이 Google Workspace 도메인을 떠나면 기본 캘린더는 기본적으로 20일 후 삭제되지만, 해당 직원이 만든 보조 캘린더는 고아 상태가 될 수 있습니다. Google Workspace 관리자 문서에 따르면, 관리자는 사용자 계정을 삭제하기 전에 캘린더 소유권을 수동으로 이전해야 합니다.

Nylas CLI는 grant에 표시되는 모든 캘린더를 나열하고 기본 캘린더와 보조 캘린더를 구분할 수 있습니다. 이는 오프보딩 전 소유권 감사에 유용합니다. 공유 캘린더가 2-3개인 일반적인 Workspace 사용자는 이 인벤토리 점검을 분기별로 실행해야 합니다.

# 모든 캘린더를 나열하고 비기본 캘린더를 표시
nylas calendar list --json | \
  jq -r '.[] | "\(.name) | primary=\(.is_primary) | id=\(.id)"'

# 특정 공유 또는 보조 캘린더의 일정 조회
nylas calendar events list --calendar cal_team_launch --days 14

Workspace 중심 팀의 경우, 인벤토리와 소유권은 캘린더 운영의 일부입니다. Google Calendar 소유권 변경 가이드에서 오프보딩 워크플로우와 프로그래밍 방식의 공유 캘린더 이전을 다룹니다.

4. Workspace 관리자 경계

Google Workspace는 개발자들이 자주 혼동하는 세 가지 인증 모델을 구분합니다: 사용자 OAuth grant (Nylas CLI가 사용하는 방식), 서버 간 호출을 위한 서비스 계정, 모든 사용자에 대한 관리자 수준 액세스를 위한 도메인 전체 위임. Google Workspace 인증 개요에 따르면, 도메인 전체 위임은 최고 관리자가 서비스 계정별로 특정 OAuth 스코프를 승인해야 합니다.

Nylas CLI는 사용자 수준 OAuth 스코프에서 작동하며, 인증된 사용자에게 표시되는 개인 및 공유 캘린더를 포함합니다. 10명 이상의 직원 캘린더를 동시에 읽거나 써야 하는 워크플로우의 경우, 서비스 계정을 통한 도메인 전체 위임이 표준 Google 접근 방식입니다. Yahoo 및 iCloud 캘린더 액세스는 대부분 개인 계정 문제인 반면, Google Workspace 캘린더 관리는 테넌트 정책 및 수명 주기 문제입니다.

5. Google Meet 및 이벤트 유형 워크플로우

Google Calendar는 참가자가 1명 이상인 일정에 자동으로 Google Meet 화상 회의 세부 정보를 첨부합니다. Google의 Workspace 블로그에 따르면 Google Meet는 매일 1억 개 이상의 회의 링크를 생성하므로, 대부분의 캘린더 자동화 스크립트는 conferencing 필드를 처리해야 합니다. Nylas CLI는 이러한 Meet 세부 정보를 포커스 타임, 부재 중, 근무 위치 메타데이터와 함께 JSON 출력으로 제공합니다.

Nylas CLI를 통해 참가자가 있는 일정을 생성하면 Google의 자동 화상 회의가 활성화됩니다. CLI가 참가자 목록과 시간 범위를 전달하면 Google Calendar가 서버 측에서 Meet 링크를 추가합니다. 결과 이벤트 객체에는 참여 링크가 포함된 conferencing.details.url 필드가 있습니다.

# 회의를 생성하고 Google이 화상 회의 세부 정보를 첨부하도록 함
nylas calendar events create \
  --title "Project Kickoff" \
  --start "2026-04-02 14:00" \
  --end "2026-04-02 15:00" \
  --participant alice@company.com \
  --participant bob@company.com

# Meet 링크 및 Google 전용 메타데이터 확인
nylas calendar events list --days 7 --json | \
  jq '.[] | {title: .title, meet: .conferencing, metadata: .metadata}'

6. Workspace 및 개인 캘린더 간 가용 시간 확인

Google Calendar에서 가용 시간을 확인하려면 캘린더 ID, 시간 범위, 시간대 오프셋과 함께 FreeBusy API 엔드포인트를 쿼리해야 합니다. Nylas CLI는 이를 모든 표시 캘린더에서 빈/바쁨 시간대를 확인하는 단일 명령으로 래핑합니다. 직원이 개인 Gmail과 Workspace 계정을 모두 가진 팀의 경우, 이중 예약을 방지하려면 가용 시간 확인 시 두 ID를 모두 고려해야 합니다.

nylas calendar availability check 명령은 인증된 사용자의 빈 시간과 바쁜 시간대를 반환합니다. nylas calendar availability find 명령은 2명 이상의 참가자 이메일 주소를 받아 상호 가능한 시간을 찾습니다. 두 명령 모두 --start--end 플래그로 검색 범위를 제한할 수 있습니다.

# 자신의 빈/바쁨 시간대 확인
nylas calendar availability check

# 동료들 간 30분 슬롯 찾기
nylas calendar availability find \
  --participants alice@company.com,bob@company.com \
  --duration 30

# 날짜 범위로 검색 제한
nylas calendar availability find \
  --participants alice@company.com,bob@company.com \
  --duration 60 \
  --start "2026-04-01" \
  --end "2026-04-05"

7. 핵심 Google Calendar 명령어

Nylas CLI는 Google Calendar에 대해 조회, 생성, 수정, 삭제의 4가지 핵심 일정 작업을 제공합니다. 이 명령어들은 Google Calendar API의 Events 리소스에 직접 매핑되지만 원시 API에 필요한 40-80줄의 Python 보일러플레이트를 건너뜁니다. 각 명령어는 대상 캘린더가 기본, 보조, 공유 Workspace 캘린더인지에 관계없이 동일하게 작동합니다.

nylas calendar events list 명령은 다음 N일간의 일정을 반환하며 --show-tz를 지원하여 각 일정 옆에 시간대 정보를 표시합니다. 종일 일정을 만들려면 날짜만 포함된 --start 값과 함께 --all-day 플래그를 사용합니다. 수정에는 일정 ID가 필요하며, list 명령의 출력에서 가져올 수 있습니다.

# 다가오는 일정 조회
nylas calendar events list --days 14 --show-tz

# 종일 일정 생성
nylas calendar events create \
  --title "Company Holiday" \
  --start "2026-04-10" \
  --all-day

# 기존 일정 일정 변경
nylas calendar events update event_abc123 \
  --title "Sprint Planning (Moved)" \
  --start "2026-04-01 11:00" \
  --end "2026-04-01 12:00"

# 일정 삭제
nylas calendar events delete event_abc123

8. 스크립팅을 위한 JSON 출력

모든 Nylas CLI 캘린더 명령은 --json 플래그를 지원하며, 기본 테이블 형식 대신 구조화된 JSON을 출력합니다. JSON 출력은 공급자에 따라 일정당 15-20개의 필드를 포함하며, 시작/종료 시간, 참가자, 화상 회의, 반복 규칙, 공급자별 메타데이터를 포함합니다. JSON을 jq로 파이프하면 전체 스크립트를 작성하지 않고도 필터링, 그룹화, 보고가 가능합니다.

JSON 구조는 Nylas 이벤트 스키마를 따르며, 시간 데이터는 when 키 아래에, 화상 회의는 conferencing 키 아래에 있습니다. Google Calendar 일정에는 다른 공급자가 노출하지 않는 color_idevent_type과 같은 추가 메타데이터 필드가 포함됩니다. 다음 예제는 제목 추출, 일별 일정 수 집계, 빈 시간대 필터링의 일반적인 패턴을 보여줍니다.

# 다가오는 모든 일정을 JSON으로 가져오기
nylas calendar events list --days 7 --json

# 일정 제목 추출
nylas calendar events list --json | jq '.[].title'

# 이번 주 일별 일정 수 집계
nylas calendar events list --days 7 --json | \
  jq 'group_by(.when.start_date) | map({date: .[0].when.start_date, count: length})'

# 빈 시간대만 추출
nylas calendar availability check --json | \
  jq '.time_slots[] | select(.status == "free")'

Google Calendar API vs Nylas CLI

Google Calendar API는 일정을 조회하는 데 GCP 프로젝트, OAuth 동의 화면, 40-80줄의 Python이 필요합니다. Nylas CLI는 30초 설치 후 단일 명령으로 동일한 결과를 달성합니다. 이 비교는 초기 설정 시간부터 기본 캘린더 CRUD 작업에 필요한 코드 줄 수까지 7가지 차원을 다룹니다.

작업Google Calendar APINylas CLI
초기 설정GCP 프로젝트 + OAuth 동의 화면 + 자격 증명 (15-30분)brew install nylas/nylas-cli/nylas (30초)
인증OAuth2 토큰 교환 코드 작성, 갱신 토큰 처리nylas auth login
일정 조회calendar.events().list()로 Python/Node.js 스크립트 작성nylas calendar events list
가용 시간 확인시간 범위와 캘린더 ID로 freebusy.query() 호출nylas calendar availability check
멀티 공급자 지원Google 전용. Outlook은 별도의 Microsoft Graph SDK 필요.Google, Outlook, Exchange, Yahoo, iCloud, IMAP
토큰 관리수동 갱신 토큰 처리 및 저장자동
코드 줄 수기본 CRUD에 40-80줄 (Python)0줄. CLI 명령만 사용.

Google Calendar 전용 팁

Google Calendar에는 Outlook, Yahoo, iCloud 캘린더에 없는 여러 공급자 전용 기능이 있습니다. 11개의 숫자 색상 레이블, RRULE 기반 반복 일정 확장, 자동 Google Meet 링크 생성, 포커스 타임 및 근무 위치와 같은 이벤트 유형이 포함됩니다. 이 4가지 영역을 이해하면 Nylas CLI를 통해 Google Calendar 데이터를 스크립팅할 때 예상치 못한 문제를 방지할 수 있습니다.

색상 레이블

Google Calendar는 일정에 1부터 11까지의 숫자 색상 ID를 할당하며, 각 숫자는 Google 팔레트의 명명된 색상에 매핑됩니다 (예: 색상 ID 11은 "Tomato"). --json으로 일정을 조회하면 메타데이터 객체에 color_id 필드가 나타납니다. 색상 ID별 필터링은 프로젝트나 우선순위별로 일정을 분류하는 스크립트에 유용합니다.

# 특정 색상의 일정 조회 (예: "Tomato" = color_id 11)
nylas calendar events list --json | \
  jq '.[] | select(.metadata.color_id == "11") | .title'

반복 일정

Google Calendar는 RFC 5545에 정의된 RRULE 패턴을 사용하여 반복 일정을 저장합니다. 예를 들어 주간 스탠드업은 FREQ=WEEKLY;BYDAY=MO와 같은 RRULE이 있는 단일 마스터 이벤트로 저장되며, Google이 이를 개별 발생으로 확장합니다. Nylas CLI가 일정을 조회하면 각 발생이 별도의 이벤트 객체로 나타납니다. master_event_id 필드는 각 발생을 원래 마스터 이벤트에 연결하며, 전체 시리즈를 일괄 편집하는 데 유용합니다.

# 일정을 조회하고 반복 시리즈 필터링
nylas calendar events list --json | \
  jq '.[] | select(.master_event_id == "event_abc123") | {title, start: .when.start_time}'

Google Meet 링크

Google Calendar는 Google Workspace 또는 개인 Gmail 계정을 통해 참가자가 1명 이상인 일정에 자동으로 Meet 참여 링크를 생성합니다. 화상 회의 데이터는 JSON 이벤트 객체의 conferencing 필드에 나타납니다. 종일 알림이나 포커스 타임 블록과 같이 참가자가 없는 일정에는 Meet 링크가 생성되지 않습니다. 다음 jq 필터는 화상 회의가 첨부된 일정만 추출합니다.

# Google Meet 링크가 있는 일정 찾기
nylas calendar events list --json | \
  jq '.[] | select(.conferencing != null) | {title, meet: .conferencing.details.url}'

근무 위치 및 포커스 타임 캘린더

Google Calendar는 다른 공급자가 지원하지 않는 3가지 특수 이벤트 유형을 도입했습니다: 포커스 타임, 부재 중, 근무 위치. 이 이벤트 유형은 일반 회의와 다르게 가용 시간에 영향을 줍니다. 예를 들어 포커스 타임 블록은 사용자를 바쁨으로 표시하면서 새 회의 초대를 자동 거절합니다. 부재 중 이벤트는 자동 거절하고 주최자에게 사용자 지정 메시지를 보냅니다. 스케줄링 스크립트가 모든 일정을 일반 회의로 처리하면 이러한 Google 전용 유형을 잘못 해석하게 됩니다. JSON 출력의 metadatastatus 필드를 확인하여 구분하세요.

# Google 전용 이벤트 메타데이터 확인
nylas calendar events list --days 7 --json | \
  jq '.[] | {title: .title, status: .status, metadata: .metadata}'

다음 단계

이 가이드에서는 Google Calendar 일정 CRUD, 가용 시간 확인, Meet 링크 및 포커스 타임 블록과 같은 공급자 전용 기능을 다루었습니다. Nylas CLI는 동일한 명령 구문으로 6개의 캘린더 공급자를 지원하므로, 이러한 패턴의 대부분은 Outlook, Yahoo, iCloud 캘린더에도 직접 적용됩니다.