一键导入
gws-shared
gws CLI: Shared patterns for authentication, global flags, and output formatting.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
gws CLI: Shared patterns for authentication, global flags, and output formatting.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Google Workspace Admin SDK: Audit logs and usage reports.
Google Calendar: Show upcoming events across all calendars.
Google Calendar: Create a new event.
Google Calendar: Manage calendars and events.
Google Chat: Send a message to a space.
Google Chat: Manage Chat spaces and messages.
| name | gws-shared |
| version | 1.0.0 |
| description | gws CLI: Shared patterns for authentication, global flags, and output formatting. |
| metadata | {"openclaw":{"category":"productivity","requires":{"bins":["gws"]}}} |
The gws binary must be on $PATH. See the project README for install options.
# Browser-based OAuth (interactive)
gws auth login
# Service Account
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json
The gws CLI stores credentials in a single config directory (~/.config/gws/ by default). To support multiple Google accounts, use the GOOGLE_WORKSPACE_CLI_CONFIG_DIR env var to point at separate config directories — one per account.
# 1. Create a config dir for the additional account
mkdir -p ~/.config/gws-personal
# 2. Copy the OAuth client config (same GCP project, different user)
cp ~/.config/gws/client_secret.json ~/.config/gws-personal/client_secret.json
# 3. Auth the new account (opens browser — sign in with the desired Google account)
GOOGLE_WORKSPACE_CLI_CONFIG_DIR=~/.config/gws-personal gws auth login
# Work account (default — no env var needed)
gws gmail users messages list --params '{"userId": "me", "q": "subject:hello"}'
# Personal account (prefix with env var)
GOOGLE_WORKSPACE_CLI_CONFIG_DIR=~/.config/gws-personal gws gmail users messages list --params '{"userId": "me", "q": "subject:hello"}'
| Account | Config Dir | Usage |
|---|---|---|
your-work@example.com (work) | ~/.config/gws/ | Default — no prefix needed |
your-personal@example.com (personal) | ~/.config/gws-personal/ | Prefix: GOOGLE_WORKSPACE_CLI_CONFIG_DIR=~/.config/gws-personal |
| Flag | Description |
|---|---|
--format <FORMAT> | Output format: json (default), table, yaml, csv |
--dry-run | Validate locally without calling the API |
--sanitize <TEMPLATE> | Screen responses through Model Armor |
gws <service> <resource> [sub-resource] <method> [flags]
| Flag | Description |
|---|---|
--params '{"key": "val"}' | URL/query parameters |
--json '{"key": "val"}' | Request body |
-o, --output <PATH> | Save binary responses to file |
--upload <PATH> | Upload file content (multipart) |
--page-all | Auto-paginate (NDJSON output) |
--page-limit <N> | Max pages when using --page-all (default: 10) |
--page-delay <MS> | Delay between pages in ms (default: 100) |
--dry-run for destructive operations--sanitize for PII/content safety screening! expansion: Sheet ranges like Sheet1!A1 contain ! which zsh interprets as history expansion. Use double quotes with escaped inner quotes instead of single quotes:
# WRONG (zsh will mangle the !)
gws sheets +read --spreadsheet ID --range 'Sheet1!A1:D10'
# CORRECT
gws sheets +read --spreadsheet ID --range "Sheet1!A1:D10"
--params and --json values in single quotes so the shell does not interpret the inner double quotes:
gws drive files list --params '{"pageSize": 5}'
https://github.com/googleworkspace/clihttps://github.com/googleworkspace/cli/issues