news 2026/7/5 9:03:36

一个命令行搞定 Google 全家桶,这个工具 28k Star

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一个命令行搞定 Google 全家桶,这个工具 28k Star

文章目录

  • 一个命令行搞定 Google 全家桶,这个工具 28k Star

一个命令行搞定 Google 全家桶,这个工具 28k Star

Google Workspace 有一堆产品:Drive、Gmail、Calendar、Sheets、Docs、Chat,每个都有自己的 API,每个 API 的调用方式还不一样。开发者想在命令行里操作这些服务,要么写一堆 curl,要么装一堆官方 SDK。

gws 是 Google Workspace 团队开源的一个命令行工具,把所有 Workspace 服务统一到一个 CLI 里。它在 GitHub 上拿到了 28,872 个 Star。

这个工具最大的特点是不维护静态命令列表。它在运行时从 Google 的 Discovery Service 读取 API 定义,动态生成所有命令。Google 新增一个 API 端点,gws 自动就能用,不需要等工具更新版本。

安装方式有几种。最简单的是从 GitHub Releases 下载对应系统的预编译二进制文件。也可以用 npm:

npm install -g @googleworkspace/cli

或者用 Homebrew:

brew install googleworkspace-cli

macOS、Linux、Windows 都支持,还有 Nix flake 可以直接跑。

装好之后,先做认证:

gws auth setup gws auth login

auth setup会帮你创建 GCP 项目、开启 API、配置 OAuth,一条龙搞定。之后auth login选一下权限范围就能用了。

认证方式有好几种。本地开发用交互式登录最方便。CI 环境可以先导出凭证文件,然后设个环境变量就行:

gws auth export --unmasked > credentials.json

在目标机器上:

export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json

也支持 Service Account 和直接传 Access Token,适配各种场景。

认证搞定之后,操作 Google 服务就很直接了。列文件、建表格、发邮件,都是一个命令的事:

gws drive files list --params '{"pageSize": 10}' gws sheets spreadsheets create --json '{"properties": {"title": "Q1 Budget"}}' gws gmail +send --to alice@example.com --subject "Hello" --body "Hi there"

每个命令都支持--help查看用法,--dry-run预览请求但不实际执行。返回的结果全是结构化 JSON,可以直接用 jq 管道处理。

除了 Discovery 自动生成的命令,gws 还提供了一批手工编写的 helper 命令,用+前缀标识。比如+triage能快速看未读邮件摘要,+agenda显示今天的日程安排,+standup-report生成站会报告。这些命令会自动读取你 Google 账号的时区设置,不需要手动指定。

对于 AI Agent 场景,gws 也很适配。项目自带 100 多个 Agent Skills 文件,覆盖 Drive、Gmail、Docs、Calendar、Sheets 等所有服务,还有 50 个现成的工作流配方。每个 API 响应都是结构化 JSON,LLM 可以直接解析,不需要额外写解析逻辑。

Gemini CLI 用户还可以直接装扩展:

gemini extensions install https://github.com/googleworkspace/cli

装完之后 Gemini CLI 就能直接调用所有 gws 命令,认证信息自动继承,不用重复登录。

Sheets 操作有个小坑:范围参数里的!在 bash 里会被当成历史展开,所以必须用单引号包起来:

gws sheets spreadsheets values get \ --params '{"spreadsheetId": "ID", "range": "Sheet1!A1:C10"}'

gws 的退出码也是结构化的,脚本里可以根据不同的错误码做分支处理。0 是成功,1 是 API 错误,2 是认证问题,3 是参数校验失败。

所有凭证在本地用 AES-256-GCM 加密存储,密钥放在系统钥匙串里。如果是在服务器上跑,也可以切换到文件存储模式。

这个项目还在积极开发中,API 可能会有变动。但对于需要在命令行或脚本里操作 Google Workspace 的开发者来说,gws 比直接调 REST API 或者装一堆 SDK 要省事很多。

I 可能会有变动。但对于需要在命令行或脚本里操作 Google Workspace 的开发者来说,gws 比直接调 REST API 或者装一堆 SDK 要省事很多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 9:00:54

TestNG插件离线安装全攻略:内网环境下的Java自动化测试部署

1. 项目概述:为什么我们需要离线安装TestNG插件? 在软件测试领域,尤其是Java生态下的自动化测试,TestNG几乎是一个绕不开的名字。它比JUnit更灵活,支持更复杂的测试场景,比如依赖测试、分组测试、参数化测试…

作者头像 李华
网站建设 2026/7/5 8:57:51

sbom-tools社区贡献指南:如何参与这个开源项目

sbom-tools社区贡献指南:如何参与这个开源项目 【免费下载链接】sbom-tools A tools named sbom-tools, designed for generating the sbom file. 项目地址: https://gitcode.com/openeuler/sbom-tools 前往项目官网免费下载:https://ar.openeule…

作者头像 李华
网站建设 2026/7/5 8:55:06

MQTT+AI异常检测:工业设备故障实时预判系统实战

摘要:工业设备“非计划停机”每小时损失数万至数十万元,传统阈值告警只能事后报警,无法预判。本文基于某汽车零部件厂CNC产线落地项目,详解如何构建“MQTT采集→时序特征工程→轻量AI推理→分级预警”的端到端故障预判系统。文章避…

作者头像 李华
网站建设 2026/7/5 8:55:03

第20章:PostgreSQL 数据模型与数据库调优

1. 项目背景 Dify 跑了三个月,一切正常。直到运营反馈"消息列表加载特别慢,翻一页要 5 秒钟"。小陈打开数据库一看——Message 表已经有 200 万条记录了,一个简单的 SELECT COUNT(*) FROM messages 跑了 3 秒。EXPLAIN 显示全表扫描(Seq Scan),因为查询条件里…

作者头像 李华