본문 바로가기
프로그램 (PHP,Python)

Google Workspace CLI 사용 Drive, Docs, Gmail 자동화까지 한 번에

by 날으는물고기 2026. 4. 11.

Google Workspace CLI 사용 Drive, Docs, Gmail 자동화까지 한 번에

728x90

gws CLI란 무엇인가

Google Workspace API를 CLI로 직접 제어하는 도구

기존 (복잡)

curl -H "Authorization: Bearer TOKEN" \
https://www.googleapis.com/drive/v3/files

gws (간단)

gws drive files list

✔️ 왜 쓰는가

  • API 문서 몰라도 됨
  • OAuth 인증 자동 처리
  • JSON 그대로 사용 가능
  • Drive / Gmail / Docs / Sheets 전부 통합

설치 방법 (Step by Step)

Go로 설치

go install github.com/googleworkspace/cli/cmd/gws@latest

👉 설치 확인

gws --help

OAuth Client 준비

👉 Google Cloud Console에서 생성

  • OAuth Client ID 생성
  • 유형: Desktop App
300x250

환경 변수 설정

export GOOGLE_WORKSPACE_CLI_CLIENT_ID="클라이언트ID"
export GOOGLE_WORKSPACE_CLI_CLIENT_SECRET="클라이언트SECRET"

로그인

gws auth login

👉 결과

  • 브라우저 로그인
  • 토큰 저장 (~/.config/gws)

기본 사용 구조 (핵심)

명령어 구조

gws <service> <resource> <method>
예시
gws drive files list
gws gmail users messages list
gws docs documents get

주요 옵션

옵션 설명
--params URL 파라미터
--json 요청 body
--format 출력 포맷
--page-all 전체 페이지 조회

Google Drive

✔️ 파일 목록 조회

gws drive files list --params '{"pageSize":10}'

✔️ 최근 파일 10개

gws drive files list \
--params '{"pageSize":10,"orderBy":"recency desc"}'

✔️ 파일 검색

gws drive files list \
--params '{"q":"name contains '\''report'\''"}'

✔️ 파일 다운로드

gws drive files get \
--params '{"fileId":"파일ID","alt":"media"}' \
--output file.bin

✔️ Docs 파일 내용 가져오기

gws drive files export \
--params '{"fileId":"파일ID","mimeType":"text/plain"}'

Google Docs

문서 조회

gws docs documents get \
--params '{"documentId":"파일ID"}'

문서 수정 (텍스트 추가)

gws docs documents batchUpdate \
--params '{"documentId":"파일ID"}' \
--json '{
  "requests":[
    {
      "insertText":{
        "location":{"index":1},
        "text":"추가 내용\n"
      }
    }
  ]
}'

Google Sheets

데이터 조회

gws sheets spreadsheets values get \
--params '{"spreadsheetId":"ID","range":"Sheet1!A1:C5"}'

데이터 입력

gws sheets spreadsheets values update \
--params '{"spreadsheetId":"ID","range":"Sheet1!A1"}' \
--json '{
  "values":[["hello"]],
  "valueInputOption":"RAW"
}'

Gmail

메일 목록

gws gmail users messages list \
--params '{"userId":"me"}'

메일 조회

gws gmail users messages get \
--params '{"userId":"me","id":"메일ID"}'

Calendar

gws calendar events list \
--params '{"calendarId":"primary"}'

고급 활용 (실무 핵심)

필터 + 정렬

--params '{
  "q":"modifiedTime > '\''2024-01-01T00:00:00'\''",
  "orderBy":"modifiedTime desc"
}'

전체 페이지 가져오기

gws drive files list --page-all

출력 포맷 변경

--format table
--format csv
--format yaml

자동화 활용 (중요)

Bash 스크립트

#!/bin/bash

gws drive files list \
--params '{"pageSize":5}' > result.json

Cron 자동 실행

0 9 * * * gws drive files list --params '{"pageSize":10}'

Slack 연동

gws drive files list \
--params '{"pageSize":5}' \
| curl -X POST -H 'Content-type: application/json' \
--data @- https://hooks.slack.com/services/xxx

CI/CD 활용

- name: Google Workspace 조회
  run: |
    gws drive files list --params '{"pageSize":10}'

실전 활용 시나리오

보고 자동화

  • Docs → PDF export
  • Slack 전송

파일 변경 모니터링

  • 최근 파일 조회
  • 변경 감지

메일 자동 처리

  • 특정 메일 탐지
  • 자동 알림

Sheets = DB 활용

  • 간단한 데이터 저장소로 사용

보안 관점 (필수 체크)

토큰 관리

❌ 잘못된 방식

export TOKEN=하드코딩

✔️ 권장

  • Secret Manager
  • Vault 사용

권한 최소화

  • Drive read-only
  • Gmail read-only

감사 로그

export GOOGLE_WORKSPACE_CLI_LOG=debug

내부 보안 점검 포인트

  • OAuth 앱 승인 여부
  • 접근 범위(scope) 검토
  • 공유 파일 접근 통제

문제 해결

인증 오류

gws auth login

API 구조 확인

gws schema drive.files.list

디버그

export GOOGLE_WORKSPACE_CLI_LOG=debug

핵심 요약

구조

gws <service> <resource> <method>

주요 서비스

  • Drive → 파일
  • Docs → 문서
  • Sheets → 데이터
  • Gmail → 메일

핵심 가치

  • 자동화
  • 통합 관리
  • API 단순화
Google Workspace를 자동화 가능한 플랫폼으로 바꾸는 도구
728x90
그리드형(광고전용)

댓글