跳到主要内容
知仓学习社ZHICANG

google-workspace-cli

Google Workspace administration via the gws CLI (github.com/googleworkspace/cli). Install, authenticate, and automate Gmail, Drive, Sheets, Calendar…

读凭据执行命令读文件联网严重 16 · 高危 7alirezarezvani/claude-skills

它会碰到什么

扫了多少11 个文本文件,116 KB
它会碰到什么读凭据执行命令读文件联网
命中总数25 处
命中统计严重 16 · 高 7 · 中 1 · 低 1
逐条看命中(23 条严重或高危)
  • 严重 references/troubleshooting.md:100cred-paths
    export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json  # from: gws auth export --unmasked
  • 严重 references/troubleshooting.md:249cred-paths
    export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json  # from: gws auth export --unmasked
  • 严重 references/troubleshooting.md:268cred-paths
    gws auth export --unmasked > credentials.json
  • 严重 references/troubleshooting.md:269cred-paths
    export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json
  • 严重 references/troubleshooting.md:278cred-paths
    export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json  # from: gws auth export --unmasked
  • 严重 scripts/auth_setup_guide.py:6cred-paths
    generates .env templates, lists required scopes, and validates auth.
  • 严重 scripts/auth_setup_guide.py:104cred-paths
    export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json
  • 严重 scripts/auth_setup_guide.py:150cred-paths
    gws auth export --unmasked > credentials.json
  • 严重 scripts/auth_setup_guide.py:151cred-paths
    export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json
  • 严重 scripts/auth_setup_guide.py:162cred-paths
    # Copy to .env and fill in values
  • 严重 scripts/auth_setup_guide.py:169cred-paths
    # GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json
  • 严重 scripts/auth_setup_guide.py:290cred-paths
    %(prog)s --generate-env               # Generate .env template
  • 严重 scripts/auth_setup_guide.py:299cred-paths
    help="Generate .env template")
  • 严重 SKILL.md:95cred-paths
    gws auth export --unmasked > credentials.json
  • 严重 SKILL.md:96cred-paths
    export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json
  • 严重 SKILL.md:102cred-paths
    # Generate .env template
  • scripts/auth_setup_guide.py:212exec-spawn
    result = subprocess.run(
  • scripts/auth_setup_guide.py:261exec-spawn
    result = subprocess.run(cmd, capture_output=True, text=True, timeout=15)
  • scripts/gws_doctor.py:79exec-spawn
    result = subprocess.run(
  • scripts/gws_doctor.py:93exec-spawn
    result = subprocess.run(
  • scripts/gws_doctor.py:119exec-spawn
    result = subprocess.run(cmd, capture_output=True, text=True, timeout=15)
  • scripts/gws_recipe_runner.py:351exec-spawn
    result = subprocess.run(argv, shell=False, capture_output=True, text=True, timeout=30)
  • scripts/workspace_audit.py:94exec-spawn
    result = subprocess.run(cmd, capture_output=True, text=True, timeout=20)

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

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 "team@company.com" \
  --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 (recommended; requires Node.js 18+)

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 "client@example.com" \
  --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:client@example.com 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": "colleague@company.com"}'

# 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": "alice@co.com"}]}'

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 |

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 26,030
本站分层T1
该仓技能数846
原文件路径engineering-team/google-workspace-cli/skills/google-workspace-cli/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 846 个技能

同名技能的其他版本

有 2 个不同仓库或目录里都有叫 google-workspace-cli 的技能。它们内容并不相同,别混用: