用途
Google Workspace CLI(命令名 gws)是一个社区构建的非官方命令行工具,旨在为 Google Workspace 提供单一命令行入口,统一访问 Drive、Gmail、Calendar、Sheets、Docs、Chat、Admin 等所有 Workspace API。它面向人类用户和 AI 代理设计,用于简化 REST API 调用、自动化工作流,并支持 AI 代理集成。
主要能力
- 动态命令构建:不提供静态命令列表,而是在运行时读取 Google Discovery Service 动态构建整个命令表面。当 Google Workspace 新增 API 端点或方法时,
gws会自动识别。 - 结构化 JSON 输出:所有响应(成功、错误、下载元数据)均为结构化 JSON,便于脚本解析和 AI 代理使用。
- AI Agent Skills:仓库附带 100+ Agent Skills(
SKILL.md文件),覆盖每个支持的 API,以及常见工作流的高级助手和 50 个精选配方(Gmail、Drive、Docs、Calendar、Sheets)。 - 多种认证方式:支持交互式(本地桌面)、无头/CI(导出流程)、服务账号(服务器到服务器)、预获取访问令牌。凭据在静态时加密(AES-256-GCM),密钥存储于操作系统密钥环。
- 辅助命令:部分服务提供手工编写的辅助命令,以
+前缀区分(如+agenda、+standup-report、+weekly-digest、+meeting-prep),自动使用 Google 账户时区。 - 模型防护(响应清理):可集成 Google Cloud Model Armor,在 API 响应到达代理前扫描提示注入。
- 结构化退出代码:脚本可根据失败类型分支,无需解析错误输出。
使用方式
安装
- 推荐:从 GitHub Releases 下载适用于你操作系统和架构的预构建二进制文件,解压后将
gws放入$PATH。 - npm(需 Node.js 18+):
npm install -g @googleworkspace/cli(自动化下载对应二进制)。 - 源码构建、Nix flake(
github:googleworkspace/cli)、Homebrew(macOS 和 Linux)。
认证设置
- 交互式(本地桌面):运行
gws auth setup(需 gcloud CLI)或手动在 Google Cloud Console 配置 OAuth。未验证应用(测试模式)限制约 25 个作用域,推荐预设包含 85+ 作用域会失败,需选择单个服务过滤作用域。 - 手动 OAuth 设置:在 Google Cloud Console 创建 OAuth 客户端(类型:桌面应用),下载 JSON 保存至
~/.config/gws/client_secret.json,并添加测试用户。 - 浏览器辅助认证:人类运行
gws auth login打开 URL 批准;代理可协助打开 URL、处理同意提示。 - 无头/CI:在有浏览器的机器完成交互认证,导出凭据
gws auth export --unmasked > credentials.json,在无头机器设置GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE环境变量。 - 服务账号:指向密钥文件,无需登录。
- 预获取访问令牌:适用于其他工具已生成令牌的环境。
基本使用
- 人类:
gws提供每个资源的--help、--dry-run预览请求、自动分页。 - AI 代理:所有响应为结构化 JSON,配合 Agent Skills,LLM 可管理 Workspace 而无需自定义工具。
- Gemini CLI 扩展:先
gws auth setup认证 CLI,再gemini extensions install https://github.com/googleworkspace/cli,即可让 Gemini CLI 代理直接访问所有gws命令和 Workspace Agent Skills。
适用场景
- 自动化脚本:替代 REST 文档的 curl 调用,简化 Google Workspace 操作。
- AI 代理集成:为 LLM 提供结构化工具接口,管理 Drive、Gmail、Calendar 等。
- 服务器端/CI 环境:通过服务账号或导出凭据实现无头操作。
- 常见工作流:使用辅助命令快速生成议程、站会报告等。
限制
- 非官方产品:明确声明“这不是 Google 官方支持的产品”。
- 活跃开发中:项目向 v1.0 推进,预期会有破坏性变更。
- 认证限制:未验证 OAuth 应用(测试模式)限制约 25 个作用域;需手动添加测试用户,否则出现“Access blocked”错误。
- 环境要求:npm 安装需 Node.js 18+;
gws auth setup需 gcloud CLI(或手动设置)。 - API 未启用:如 GCP 项目未启用所需 API,会返回 403
accessNotConfigured错误,需手动启用或运行gws auth setup。 - Sheets 范围转义:范围使用
!时需用单引号包裹,避免 bash 历史扩展。 - 其他:redirect_uri_mismatch 需确保 OAuth 客户端类型为桌面应用。