Google workspace CLI

Google Workspace administration via the gws CLI (github.com/googleworkspace/cli).

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/google-workspace-cli, including the files SKILL.md points to.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit alirezarezvani/claude-skills/engineering-team/google-workspace-cli/skills/google-workspace-cli#main ~/.claude/skills/google-workspace-cli

For one project only, change the path to .claude/skills/google-workspace-cli. This skill also uses Node.js, credentials.json, gws_doctor.py, auth_setup_guide.py, gws_recipe_runner.py, workspace_audit.py — copying SKILL.md alone won't be enough. See the folder on GitHub.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Google workspace CLI

Show the full text377 lines
namedescription
google-workspace-cliGoogle Workspace administration via the gws CLI (github.com/googleworkspace/cli). Install, authenticate, and automate Gmail, Drive, Sheets, Calendar, Docs, Chat, and Tasks. Run security audits and use local recipe templates and persona bundles. Use for Google Workspace admin, gws CLI setup, Gmail automation, Drive management, or Calendar scheduling.

Google Workspace CLI

Expert guidance and automation for Google Workspace administration using the open-source gws CLI (github.com/googleworkspace/cli, Apache-2.0). The CLI builds its command surface dynamically from Google's Discovery Service, so it covers every supported Workspace API plus +-prefixed helper commands. This skill adds local Python tools (doctor, auth guide, recipe catalog, security audit, output analyzer).

Verify before scripting: gws generates commands at runtime from Google's API discovery documents, and the CLI is pre-v1.0. Always confirm a command's exact surface with gws --help, gws <service> --help, or gws schema <service>.<resource>.<method> before putting it in automation. Commands in this skill marked (verify) are illustrative of the gws <service> <resource> <method> pattern and must be checked against your installed version.


Quick Start

Check Installation
# Verify gws is installed and authenticated
python3 scripts/gws_doctor.py
Send an Email
gws gmail +send --to "[email protected]" \
  --subject "Weekly Update" --body "Here's this week's summary..."
List Drive Files
gws drive files list --params '{"pageSize": 20}' | python3 scripts/output_analyzer.py --select "name,mimeType,modifiedTime" --format table

Installation

npm install -g @googleworkspace/cli
gws --version
Homebrew (macOS/Linux)
brew install googleworkspace-cli
Cargo (from source)
cargo install --git https://github.com/googleworkspace/cli --locked
gws --version
Pre-built Binaries

Download from github.com/googleworkspace/cli/releases for macOS, Linux, or Windows. Nix users: nix run github:googleworkspace/cli.

Verify Installation
python3 scripts/gws_doctor.py
# Checks: PATH, version, auth status, service connectivity

Authentication

OAuth Setup (Interactive)
# Step 1: Create Google Cloud project and OAuth credentials
python3 scripts/auth_setup_guide.py --guide oauth

# Step 2: Run interactive auth setup (uses gcloud if available)
gws auth setup

# Step 3: Log in, requesting only the scopes you need
gws auth login -s drive,gmail,sheets
Headless/CI
# Generate setup instructions
python3 scripts/auth_setup_guide.py --guide service-account

# Export credentials from an interactive machine, then point the CLI at them
gws auth export --unmasked > credentials.json
export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json
Environment Variables
# Generate .env template
python3 scripts/auth_setup_guide.py --generate-env
Variable Purpose
GOOGLE_WORKSPACE_CLI_CLIENT_ID OAuth client ID
GOOGLE_WORKSPACE_CLI_CLIENT_SECRET OAuth client secret
GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE Path to exported credentials JSON
GOOGLE_WORKSPACE_CLI_TOKEN Pre-obtained OAuth token
GOOGLE_WORKSPACE_CLI_CONFIG_DIR Override default config location
GOOGLE_WORKSPACE_CLI_LOG Enable debug logging
Validate Authentication
python3 scripts/auth_setup_guide.py --validate --json
# Tests each service endpoint

Workflow 1: Gmail Automation

Goal: Automate email operations — send, search, label, and filter management.

Send, Reply, Forward (helper commands)
# Send a new email
gws gmail +send --to "[email protected]" \
  --subject "Proposal" --body "Please find attached..."

# Reply to a message (auto-threading); check exact flags with: gws gmail +reply --help
gws gmail +reply ...

# Forward a message; check exact flags with: gws gmail +forward --help
gws gmail +forward ...

# Unread inbox summary
gws gmail +triage
Search and Inspect (discovery commands)

Discovery commands follow gws <service> <resource> <method> and take request parameters as JSON via --params (query/path params) and --json (request body). Inspect any method's exact schema first:

# What does messages.list accept? (verify)
gws schema gmail.users.messages.list

# Search emails (verify against the schema above)
gws gmail users messages list --params '{"userId": "me", "q": "from:[email protected] after:2025/01/01"}' \
  | python3 scripts/output_analyzer.py --count

# List labels (verify)
gws gmail users labels list --params '{"userId": "me"}'
Bulk Operations

Use --dry-run first, and --page-all to paginate (one JSON line per page):

# Preview, then archive read emails older than 30 days (verify method schema first)
gws gmail users messages list --params '{"userId": "me", "q": "is:read older_than:30d"}' --page-all \
  | python3 scripts/output_analyzer.py --select "id" --format json
# Then feed ids to gmail users messages modify (see: gws schema gmail.users.messages.modify)

Workflow 2: Drive & Sheets

Goal: Manage files, create spreadsheets, configure sharing, and export data.

File Operations
# List files
gws drive files list --params '{"pageSize": 50}' \
  | python3 scripts/output_analyzer.py --select "name,mimeType,size" --format table

# Upload a file (helper)
gws drive +upload ./report.pdf --name "Q1 Report"

# Create a Google Sheet
gws sheets spreadsheets create --json '{"properties": {"title": "Budget 2026"}}'

# Download/export — inspect the method first (verify)
gws schema drive.files.export
Sharing (verify schemas first)
# Inspect the permissions API surface
gws schema drive.permissions.create

# Share with user (verify against schema)
gws drive permissions create --params '{"fileId": "<FILE_ID>"}' \
  --json '{"type": "user", "role": "writer", "emailAddress": "[email protected]"}'

# List who has access (verify)
gws drive permissions list --params '{"fileId": "<FILE_ID>"}'
Sheets Data
# Read values (helper); check exact flags with: gws sheets +read --help
gws sheets +read ...

# Append a row (helper); check exact flags with: gws sheets +append --help
gws sheets +append ...

# Or use discovery methods (verify):
gws schema sheets.spreadsheets.values.update
gws sheets spreadsheets values get --params '{"spreadsheetId": "<SHEET_ID>", "range": "Sheet1!A1:D10"}'

Workflow 3: Calendar & Meetings

Goal: Schedule events, find available times, and generate standup reports.

Event Management
# Create an event (helper); check exact flags with: gws calendar +insert --help
gws calendar +insert ...

# Upcoming events (helper, timezone-aware)
gws calendar +agenda

# Or via discovery (verify):
gws schema calendar.events.insert
gws calendar events list --params '{"calendarId": "primary", "maxResults": 10}'
Find Available Time
# Free/busy via the Calendar API (verify schema first)
gws schema calendar.freebusy.query
gws calendar freebusy query --json '{"timeMin": "...", "timeMax": "...", "items": [{"id": "[email protected]"}]}'
Standup Report (workflow helpers)
# Today's meetings + tasks
gws workflow +standup-report \
  | python3 scripts/output_analyzer.py --format table

# Next meeting prep; check exact flags with: gws workflow +meeting-prep --help
gws workflow +meeting-prep

Workflow 4: Security Audit

Goal: Audit Google Workspace security configuration and generate remediation commands.

Run Full Audit
# Full audit across all services
python3 scripts/workspace_audit.py --json

# Audit specific services
python3 scripts/workspace_audit.py --services gmail,drive,calendar

# Demo mode (no gws required)
python3 scripts/workspace_audit.py --demo
Audit Checks
Area Check Risk
Drive External sharing enabled Data exfiltration
Gmail Auto-forwarding rules Data exfiltration
Gmail DMARC/SPF/DKIM records Email spoofing
Calendar Default sharing visibility Information leak
OAuth Third-party app grants Unauthorized access
Admin Super admin count Privilege escalation
Admin 2-Step verification enforcement Account takeover
Review and Remediate
# Review findings
python3 scripts/workspace_audit.py --json | python3 scripts/output_analyzer.py \
  --filter "status=FAIL" --select "area,check,remediation"

# Execute remediation (example: check current Drive settings first; verify)
gws drive about get --params '{"fields": "*"}'
# Follow remediation commands from audit output (verify each against gws --help)

Python Tools

Script Purpose Usage
gws_doctor.py Pre-flight diagnostics python3 scripts/gws_doctor.py [--json] [--services gmail,drive]
auth_setup_guide.py Guided auth setup python3 scripts/auth_setup_guide.py --guide oauth
gws_recipe_runner.py Recipe catalog & runner python3 scripts/gws_recipe_runner.py --list [--persona pm]
workspace_audit.py Security/config audit python3 scripts/workspace_audit.py [--json] [--demo]
output_analyzer.py JSON/NDJSON analysis gws ... --json | python3 scripts/output_analyzer.py --count

All scripts are stdlib-only, support --json output, and include demo mode with embedded sample data.


Best Practices

Security
  1. Use OAuth with minimal scopes — request only what each workflow needs
  2. Store tokens in the system keyring, never in plain text files
  3. Rotate service account keys every 90 days
  4. Audit third-party OAuth app grants quarterly
  5. Use --dry-run before bulk destructive operations
Automation
  1. All gws output is structured JSON — pipe it through output_analyzer.py for filtering and aggregation
  2. Use gws workflow +* helpers for multi-step operations instead of chaining raw commands
  3. Use the local recipe catalog (gws_recipe_runner.py) as command templates, then verify each against gws --help
  4. --page-all emits one JSON line per page (NDJSON) for streaming large result sets
  5. Use --dry-run to preview any request before executing it
Performance
  1. Request only needed fields via the API's fields parameter in --params (reduces payload size)
  2. Use pageSize in --params to cap results when browsing
  3. Use --page-all only when you need complete datasets; tune with --page-limit / --page-delay
  4. Prefer + helpers (single optimized calls) over hand-chained API calls
  5. Cache frequently accessed data (e.g., label IDs, folder IDs) in variables

Limitations

Constraint Impact
OAuth tokens expire after 1 hour Re-auth needed for long-running scripts
API rate limits (per-user, per-service) Bulk operations may hit 429 errors
Scope requirements vary by service Must request correct scopes during auth
Pre-v1.0 CLI status Breaking changes possible between releases
Google Cloud project required Free, but requires setup in Cloud Console
Admin API needs admin privileges Some audit checks require Workspace Admin role
Required Scopes by Service
# List scopes for specific services
python3 scripts/auth_setup_guide.py --scopes gmail,drive,calendar,sheets
Service Key Scopes
Gmail gmail.modify, gmail.send, gmail.labels
Drive drive.file, drive.metadata.readonly
Sheets spreadsheets
Calendar calendar, calendar.events
Admin admin.directory.user.readonly, admin.directory.group
Tasks tasks
1---
2name: "google-workspace-cli"
3description: "Google Workspace administration via the gws CLI (github.com/googleworkspace/cli). Install, authenticate, and automate Gmail, Drive, Sheets, Calendar, Docs, Chat, and Tasks. Run security audits and use local recipe templates and persona bundles. Use for Google Workspace admin, gws CLI setup, Gmail automation, Drive management, or Calendar scheduling."
4---
5 
6# Google Workspace CLI
7 
8Expert guidance and automation for Google Workspace administration using the open-source `gws` CLI ([github.com/googleworkspace/cli](https://github.com/googleworkspace/cli), Apache-2.0). The CLI builds its command surface dynamically from Google's Discovery Service, so it covers every supported Workspace API plus `+`-prefixed helper commands. This skill adds local Python tools (doctor, auth guide, recipe catalog, security audit, output analyzer).
9 
10> **Verify before scripting:** `gws` generates commands at runtime from Google's API discovery documents, and the CLI is pre-v1.0. Always confirm a command's exact surface with `gws --help`, `gws <service> --help`, or `gws schema <service>.<resource>.<method>` before putting it in automation. Commands in this skill marked *(verify)* are illustrative of the `gws <service> <resource> <method>` pattern and must be checked against your installed version.
11 
12---
13 
14## Quick Start
15 
16### Check Installation
17 
18```bash
19# Verify gws is installed and authenticated
20python3 scripts/gws_doctor.py
21```
22 
23### Send an Email
24 
25```bash
26gws gmail +send --to "[email protected]" \
27 --subject "Weekly Update" --body "Here's this week's summary..."
28```
29 
30### List Drive Files
31 
32```bash
33gws drive files list --params '{"pageSize": 20}' | python3 scripts/output_analyzer.py --select "name,mimeType,modifiedTime" --format table
34```
35 
36---
37 
38## Installation
39 
40### npm (recommended; requires Node.js 18+)
41 
42```bash
43npm install -g @googleworkspace/cli
44gws --version
45```
46 
47### Homebrew (macOS/Linux)
48 
49```bash
50brew install googleworkspace-cli
51```
52 
53### Cargo (from source)
54 
55```bash
56cargo install --git https://github.com/googleworkspace/cli --locked
57gws --version
58```
59 
60### Pre-built Binaries
61 
62Download from [github.com/googleworkspace/cli/releases](https://github.com/googleworkspace/cli/releases) for macOS, Linux, or Windows. Nix users: `nix run github:googleworkspace/cli`.
63 
64### Verify Installation
65 
66```bash
67python3 scripts/gws_doctor.py
68# Checks: PATH, version, auth status, service connectivity
69```
70 
71---
72 
73## Authentication
74 
75### OAuth Setup (Interactive)
76 
77```bash
78# Step 1: Create Google Cloud project and OAuth credentials
79python3 scripts/auth_setup_guide.py --guide oauth
80 
81# Step 2: Run interactive auth setup (uses gcloud if available)
82gws auth setup
83 
84# Step 3: Log in, requesting only the scopes you need
85gws auth login -s drive,gmail,sheets
86```
87 
88### Headless/CI
89 
90```bash
91# Generate setup instructions
92python3 scripts/auth_setup_guide.py --guide service-account
93 
94# Export credentials from an interactive machine, then point the CLI at them
95gws auth export --unmasked > credentials.json
96export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json
97```
98 
99### Environment Variables
100 
101```bash
102# Generate .env template
103python3 scripts/auth_setup_guide.py --generate-env
104```
105 
106| Variable | Purpose |
107|----------|---------|
108| `GOOGLE_WORKSPACE_CLI_CLIENT_ID` | OAuth client ID |
109| `GOOGLE_WORKSPACE_CLI_CLIENT_SECRET` | OAuth client secret |
110| `GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE` | Path to exported credentials JSON |
111| `GOOGLE_WORKSPACE_CLI_TOKEN` | Pre-obtained OAuth token |
112| `GOOGLE_WORKSPACE_CLI_CONFIG_DIR` | Override default config location |
113| `GOOGLE_WORKSPACE_CLI_LOG` | Enable debug logging |
114 
115### Validate Authentication
116 
117```bash
118python3 scripts/auth_setup_guide.py --validate --json
119# Tests each service endpoint
120```
121 
122---
123 
124## Workflow 1: Gmail Automation
125 
126**Goal:** Automate email operations — send, search, label, and filter management.
127 
128### Send, Reply, Forward (helper commands)
129 
130```bash
131# Send a new email
132gws gmail +send --to "[email protected]" \
133 --subject "Proposal" --body "Please find attached..."
134 
135# Reply to a message (auto-threading); check exact flags with: gws gmail +reply --help
136gws gmail +reply ...
137 
138# Forward a message; check exact flags with: gws gmail +forward --help
139gws gmail +forward ...
140 
141# Unread inbox summary
142gws gmail +triage
143```
144 
145### Search and Inspect (discovery commands)
146 
147Discovery commands follow `gws <service> <resource> <method>` and take request
148parameters as JSON via `--params` (query/path params) and `--json` (request body).
149Inspect any method's exact schema first:
150 
151```bash
152# What does messages.list accept? (verify)
153gws schema gmail.users.messages.list
154 
155# Search emails (verify against the schema above)
156gws gmail users messages list --params '{"userId": "me", "q": "from:[email protected] after:2025/01/01"}' \
157 | python3 scripts/output_analyzer.py --count
158 
159# List labels (verify)
160gws gmail users labels list --params '{"userId": "me"}'
161```
162 
163### Bulk Operations
164 
165Use `--dry-run` first, and `--page-all` to paginate (one JSON line per page):
166 
167```bash
168# Preview, then archive read emails older than 30 days (verify method schema first)
169gws gmail users messages list --params '{"userId": "me", "q": "is:read older_than:30d"}' --page-all \
170 | python3 scripts/output_analyzer.py --select "id" --format json
171# Then feed ids to gmail users messages modify (see: gws schema gmail.users.messages.modify)
172```
173 
174---
175 
176## Workflow 2: Drive & Sheets
177 
178**Goal:** Manage files, create spreadsheets, configure sharing, and export data.
179 
180### File Operations
181 
182```bash
183# List files
184gws drive files list --params '{"pageSize": 50}' \
185 | python3 scripts/output_analyzer.py --select "name,mimeType,size" --format table
186 
187# Upload a file (helper)
188gws drive +upload ./report.pdf --name "Q1 Report"
189 
190# Create a Google Sheet
191gws sheets spreadsheets create --json '{"properties": {"title": "Budget 2026"}}'
192 
193# Download/export — inspect the method first (verify)
194gws schema drive.files.export
195```
196 
197### Sharing (verify schemas first)
198 
199```bash
200# Inspect the permissions API surface
201gws schema drive.permissions.create
202 
203# Share with user (verify against schema)
204gws drive permissions create --params '{"fileId": "<FILE_ID>"}' \
205 --json '{"type": "user", "role": "writer", "emailAddress": "[email protected]"}'
206 
207# List who has access (verify)
208gws drive permissions list --params '{"fileId": "<FILE_ID>"}'
209```
210 
211### Sheets Data
212 
213```bash
214# Read values (helper); check exact flags with: gws sheets +read --help
215gws sheets +read ...
216 
217# Append a row (helper); check exact flags with: gws sheets +append --help
218gws sheets +append ...
219 
220# Or use discovery methods (verify):
221gws schema sheets.spreadsheets.values.update
222gws sheets spreadsheets values get --params '{"spreadsheetId": "<SHEET_ID>", "range": "Sheet1!A1:D10"}'
223```
224 
225---
226 
227## Workflow 3: Calendar & Meetings
228 
229**Goal:** Schedule events, find available times, and generate standup reports.
230 
231### Event Management
232 
233```bash
234# Create an event (helper); check exact flags with: gws calendar +insert --help
235gws calendar +insert ...
236 
237# Upcoming events (helper, timezone-aware)
238gws calendar +agenda
239 
240# Or via discovery (verify):
241gws schema calendar.events.insert
242gws calendar events list --params '{"calendarId": "primary", "maxResults": 10}'
243```
244 
245### Find Available Time
246 
247```bash
248# Free/busy via the Calendar API (verify schema first)
249gws schema calendar.freebusy.query
250gws calendar freebusy query --json '{"timeMin": "...", "timeMax": "...", "items": [{"id": "[email protected]"}]}'
251```
252 
253### Standup Report (workflow helpers)
254 
255```bash
256# Today's meetings + tasks
257gws workflow +standup-report \
258 | python3 scripts/output_analyzer.py --format table
259 
260# Next meeting prep; check exact flags with: gws workflow +meeting-prep --help
261gws workflow +meeting-prep
262```
263 
264---
265 
266## Workflow 4: Security Audit
267 
268**Goal:** Audit Google Workspace security configuration and generate remediation commands.
269 
270### Run Full Audit
271 
272```bash
273# Full audit across all services
274python3 scripts/workspace_audit.py --json
275 
276# Audit specific services
277python3 scripts/workspace_audit.py --services gmail,drive,calendar
278 
279# Demo mode (no gws required)
280python3 scripts/workspace_audit.py --demo
281```
282 
283### Audit Checks
284 
285| Area | Check | Risk |
286|------|-------|------|
287| Drive | External sharing enabled | Data exfiltration |
288| Gmail | Auto-forwarding rules | Data exfiltration |
289| Gmail | DMARC/SPF/DKIM records | Email spoofing |
290| Calendar | Default sharing visibility | Information leak |
291| OAuth | Third-party app grants | Unauthorized access |
292| Admin | Super admin count | Privilege escalation |
293| Admin | 2-Step verification enforcement | Account takeover |
294 
295### Review and Remediate
296 
297```bash
298# Review findings
299python3 scripts/workspace_audit.py --json | python3 scripts/output_analyzer.py \
300 --filter "status=FAIL" --select "area,check,remediation"
301 
302# Execute remediation (example: check current Drive settings first; verify)
303gws drive about get --params '{"fields": "*"}'
304# Follow remediation commands from audit output (verify each against gws --help)
305```
306 
307---
308 
309## Python Tools
310 
311| Script | Purpose | Usage |
312|--------|---------|-------|
313| `gws_doctor.py` | Pre-flight diagnostics | `python3 scripts/gws_doctor.py [--json] [--services gmail,drive]` |
314| `auth_setup_guide.py` | Guided auth setup | `python3 scripts/auth_setup_guide.py --guide oauth` |
315| `gws_recipe_runner.py` | Recipe catalog & runner | `python3 scripts/gws_recipe_runner.py --list [--persona pm]` |
316| `workspace_audit.py` | Security/config audit | `python3 scripts/workspace_audit.py [--json] [--demo]` |
317| `output_analyzer.py` | JSON/NDJSON analysis | `gws ... --json \| python3 scripts/output_analyzer.py --count` |
318 
319All scripts are stdlib-only, support `--json` output, and include demo mode with embedded sample data.
320 
321---
322 
323## Best Practices
324 
325### Security
326 
3271. Use OAuth with minimal scopes — request only what each workflow needs
3282. Store tokens in the system keyring, never in plain text files
3293. Rotate service account keys every 90 days
3304. Audit third-party OAuth app grants quarterly
3315. Use `--dry-run` before bulk destructive operations
332 
333### Automation
334 
3351. All `gws` output is structured JSON — pipe it through `output_analyzer.py` for filtering and aggregation
3362. Use `gws workflow +*` helpers for multi-step operations instead of chaining raw commands
3373. Use the local recipe catalog (`gws_recipe_runner.py`) as command templates, then verify each against `gws --help`
3384. `--page-all` emits one JSON line per page (NDJSON) for streaming large result sets
3395. Use `--dry-run` to preview any request before executing it
340 
341### Performance
342 
3431. Request only needed fields via the API's `fields` parameter in `--params` (reduces payload size)
3442. Use `pageSize` in `--params` to cap results when browsing
3453. Use `--page-all` only when you need complete datasets; tune with `--page-limit` / `--page-delay`
3464. Prefer `+` helpers (single optimized calls) over hand-chained API calls
3475. Cache frequently accessed data (e.g., label IDs, folder IDs) in variables
348 
349---
350 
351## Limitations
352 
353| Constraint | Impact |
354|------------|--------|
355| OAuth tokens expire after 1 hour | Re-auth needed for long-running scripts |
356| API rate limits (per-user, per-service) | Bulk operations may hit 429 errors |
357| Scope requirements vary by service | Must request correct scopes during auth |
358| Pre-v1.0 CLI status | Breaking changes possible between releases |
359| Google Cloud project required | Free, but requires setup in Cloud Console |
360| Admin API needs admin privileges | Some audit checks require Workspace Admin role |
361 
362### Required Scopes by Service
363 
364```bash
365# List scopes for specific services
366python3 scripts/auth_setup_guide.py --scopes gmail,drive,calendar,sheets
367```
368 
369| Service | Key Scopes |
370|---------|-----------|
371| Gmail | `gmail.modify`, `gmail.send`, `gmail.labels` |
372| Drive | `drive.file`, `drive.metadata.readonly` |
373| Sheets | `spreadsheets` |
374| Calendar | `calendar`, `calendar.events` |
375| Admin | `admin.directory.user.readonly`, `admin.directory.group` |
376| Tasks | `tasks` |
377 

Discussion