GWS CLI 캘린더

일정은 사람의 시간을 쓰는 자료입니다. 조회는 마음껏 하고, 등록·수정은 조심하십시오.

기본기와 인증은 GWS CLI에 있습니다.


1. 일정 보기 — +agenda

gws calendar +agenda                        # 다가오는 일정
gws calendar +agenda --today
gws calendar +agenda --tomorrow
gws calendar +agenda --week --format table
gws calendar +agenda --days 3
gws calendar +agenda --today --calendar '업무'
gws calendar +agenda --today --timezone Asia/Seoul

읽기 전용입니다. 기본으로 계정에 붙은 모든 달력을 함께 조회하고, --calendar로 좁힐 수 있습니다. 시간대는 구글 계정 설정을 따르며 --timezone으로 덮어씁니다.

출력에 count 칸이 있습니다. 0이면 그 기간에 일정이 없다는 뜻입니다 — 명령이 실패한 게 아닙니다.

🔴 달력이 비어 보일 때 먼저 볼 것

API는 구글 계정에 저장된 일정만 봅니다. 휴대폰에서 만든 일정이 기기 로컬 달력이나 다른 계정에 저장돼 있으면 여기서 안 보입니다. “일정이 없다”고 보고하기 전에 그 일정이 어느 계정에 저장됐는지부터 확인하십시오. 폰 달력 앱의 기본 저장 계정이 구글이 아닌 경우가 드물지 않습니다.

달력 목록은 이렇게 봅니다.

gws calendar calendarList list --params '{"fields":"items(id,summary,accessRole,primary)"}'

accessRole이 reader인 달력은 남이 공유해준 것이라 일정을 넣을 수 없습니다. owner·writer인 달력에만 씁니다.

2. 일정 넣기 — +insert

gws calendar +insert \
  --summary '운영위원회' \
  --start '2026-10-15T14:00:00+09:00' \
  --end   '2026-10-15T16:00:00+09:00' \
  --location '품앗이 2층 회의실' \
  --description '안건: 4분기 계획' \
  --attendee [email protected] \
  --meet
옵션쓰임
--summary --start --end필수
--calendar <ID>기본은 primary
--location --description
--attendee <이메일>여러 번 반복 가능
--meet구글 미트 링크 자동 생성
--dry-run보내지 않고 요청만 확인

시간은 RFC 3339로 씁니다. 시간대 표기를 꼭 붙이십시오 — 2026-10-15T14:00:00 처럼 끝을 비우면 어느 시간대인지 모호해집니다. 한국이면 +09:00.

🔴 참석자를 넣으면 메일이 나간다

--attendee를 붙이면 그 사람에게 초대 메일이 갑니다. 되돌릴 수 없는 외부 행동입니다. 그리고 남의 달력에 일정을 잡는 일은 그 사람의 시간을 쓰는 결정입니다. 참석 여부를 내가 판단해서 넣지 말고, 당사자에게 확인한 뒤 넣으십시오. --dry-run을 먼저 돌려 명단을 보십시오.

3. 빈 시간 찾기 — freebusy

gws calendar freebusy query --json '{
  "timeMin":"2026-10-13T00:00:00+09:00",
  "timeMax":"2026-10-18T00:00:00+09:00",
  "items":[{"id":"primary"},{"id":"[email protected]"}]
}'

바쁜 구간만 돌려주니 일정 제목이 노출되지 않습니다. 남의 달력을 들여다보지 않고 가능한 시간을 찾을 때 적절합니다. 한 번에 달력 50개까지 조회할 수 있습니다.

4. 원시 API

# 기간 조회(반복 일정을 개별 일정으로 펼치기)
gws calendar events list --params '{
  "calendarId":"primary",
  "timeMin":"2026-10-01T00:00:00+09:00",
  "timeMax":"2026-11-01T00:00:00+09:00",
  "singleEvents":true,
  "orderBy":"startTime",
  "fields":"items(id,summary,start,end,location,attendees(email,responseStatus))"
}' --format table
 
# 검색
gws calendar events list --params '{"calendarId":"primary","q":"회의","singleEvents":true}'
 
# 수정 — 바꿀 필드만
gws calendar events patch --params '{"calendarId":"primary","eventId":"<ID>"}' \
  --json '{"location":"온라인"}'
 
# 삭제
gws calendar events delete --params '{"calendarId":"primary","eventId":"<ID>"}'
 
# 초대 응답
gws calendar events patch --params '{"calendarId":"primary","eventId":"<ID>"}' \
  --json '{"attendees":[{"email":"[email protected]","responseStatus":"accepted"}]}'

반복 일정을 다룰 때 singleEvents: true를 빼면 반복 규칙 한 건으로 나옵니다. 날짜별로 보고 싶으면 반드시 붙이십시오. 붙이면 orderBy: "startTime"도 쓸 수 있습니다.

달력 자체를 만들거나 공유하는 일은 calendars·acl 리소스에 있습니다.

gws calendar calendars insert --json '{"summary":"조합 일정","timeZone":"Asia/Seoul"}'
gws calendar acl insert --params '{"calendarId":"<ID>"}' \
  --json '{"role":"reader","scope":{"type":"user","value":"[email protected]"}}'

5. 묶음 명령 — workflow

캘린더와 다른 서비스를 엮은 헬퍼가 따로 있습니다.

gws workflow +standup-report    # 오늘 회의 + 미완료 할 일
gws workflow +meeting-prep      # 다음 회의의 안건·참석자·연결된 문서
gws workflow +weekly-digest     # 이번 주 회의 + 안 읽은 메일 수

6. 함께 읽기