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
그리드형(광고전용)
댓글