Install
openclaw skills install @thcjp/gogopenclaw skills install @thcjp/gog核心功能: 本技能提供化流程等能力。
核心功能: 本技能提供自动化配置和灵活的参数设置、工作流程和效率、时使用、、工作流优化时使用、处理、工作流优化时使用等能力。
gog 是 Google Workspace 的命令行工具,统一封装 Gmail、Calendar、Drive、Contacts、Sheets、Docs 六大服务的 API 调用。所有操作通过 OAuth 凭证鉴权,支持多账户切换、JSON 结构化输出与 --no-input 脚本模式.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | Gog处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 复杂工作流可视化编排 | 不支持 | 支持 |
| 条件分支与异常重试 | 不支持 | 支持 |
| 定时触发与事件驱动 | 不支持 | 支持 |
| 执行日志与审计追踪 | 不支持 | 支持 |
| 分布式任务调度与负载均衡 | 不支持 | 支持 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
需要配置对应API Key,详见上文环境配置章节
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
client_secret.json、添加多服务授权账户、列出已授权账户newer_than:、from:、has:attachment 等)、发送邮件--max 限制返回数量gog的相关能力gog auth credentials /path/to/client_secret.json
gog auth add you@gmail.com --services gmail,calendar,drive,contacts,sheets,docs
gog auth list
client_secret.json 从 Google Cloud Console 的 OAuth 客户端凭证页面下载,类型选择"桌面应用"。--services 按需勾选,首次 auth add 会触发浏览器授权流程.
搜索近 7 天邮件:
gog gmail search 'newer_than:7d' --max 10
发送邮件:
gog gmail send --to a@b.com --subject "Hi" --body "Hello"
查询日历事件:
gog calendar events <calendarId> --from 2026-07-01T00:00:00Z --to 2026-07-31T23:59:59Z
搜索云盘文件:
gog drive search "name='季度报告'" --max 10
列出联系人:
gog contacts list --max 20
读取范围:
gog sheets get <sheetId> "Tab!A1:D10" --json
更新范围:
gog sheets update <sheetId> "Tab!A1:B2" --values-json '[["A","B"],["1","2"]]' --input USER_ENTERED
追加行:
gog sheets append <sheetId> "Tab!A:C" --values-json '[["x","y","z"]]' --insert INSERT_ROWS
清除范围:
gog sheets clear <sheetId> "Tab!A2:Z"
获取元数据:
gog sheets metadata <sheetId> --json
导出文档:
gog docs export <docId> --format txt --out /tmp/doc.txt
直接输出文档内容:
gog docs cat <docId>
GOG_ACCOUNT=you@gmail.com 可避免每次重复 --account 参数--json 加 --no-input,确保输出可解析且不阻塞--values-json 传递,避免内联行格式歧义输入:近 7 天带附件的邮件列表、--max 20、JSON 输出
输出:结构化邮件列表,包含发件人、主题、附件名,可管道给下游脚本分类归档
输入:Google Sheet ID、目标范围 Tab!A:C、追加数据 [["x","y","z"]]
输出:追加后的范围统计(更新行数、列数),可用于流水线断言
输入:主日历 ID、ISO8601 时间区间 --from --to
输出:该区间内所有事件列表,含标题、开始时间、结束时间、参会人
输入:多个 Doc ID、导出格式 txt、输出路径 /tmp/
输出:本地文本文件,可纳入版本控制或全文检索索引
需求:每天凌晨归档近 7 天带附件的邮件到本地 JSON 文件. 实现:
export GOG_ACCOUNT=you@gmail.com
gog gmail search 'newer_than:7d has:attachment' --max 50 --json --no-input > /tmp/mail-$(date +%F).json
输出示例:
[
{"id":"abc123","from":"noreply@github.com","subject":"PR merged","attachments":["patch.diff"]},
{"id":"def456","from":"boss@company.com","subject":"周报评审","attachments":["review.pdf"]}
]
下游脚本读取 JSON 分类归档,--no-input 确保不阻塞流水线.
需求:CI 流水线每次构建完成后,向监控 Sheet 的 Builds!A:C 追加一行构建记录.
实现:
gog sheets append <sheetId> "Builds!A:C" \
--values-json '[["2026-07-20","#1234","success"]]' \
--insert INSERT_ROWS \
--no-input
输出:UpdatedRange: Builds!A5:C5, UpdatedRows: 1,可用于断言追加成功.
需求:导出本周主日历事件,生成 Markdown 待办清单. 实现:
gog calendar events primary \
--from 2026-07-20T00:00:00Z \
--to 2026-07-26T23:59:59Z \
--json --no-input \
| python3 -c "
import json,sys
events = json.load(sys.stdin)
for e in events:
print(f'- [ ] {e[\"summary\"]} @ {e[\"start\"]}')
"
输出本周所有会议标题与开始时间,管道给 Python 生成 Markdown 清单.
现象:gog auth list 为空,或调用任何命令返回 "no credentials"
原因:未执行 gog auth credentials 导入 client_secret.json
处理:从 Google Cloud Console 下载 OAuth 桌面应用凭证,执行 gog auth credentials /path/to/client_secret.json 后重新 gog auth add
现象:调用 gog gmail search 返回 "service not authorized for account"
原因:auth add 时 --services 未包含 gmail
处理:重新执行 gog auth add you@gmail.com --services gmail,calendar,drive,contacts,sheets,docs,补全所需服务
现象:gog sheets get 返回 400,提示 "Unable to parse range"
原因:范围未带工作表名(如 A1:D10)或工作表名含特殊字符未加引号
处理:范围必须为 工作表名!A1:D10 格式;含空格或特殊字符的工作表名需用单引号包裹,如 'My Sheet'!A1:D10
现象:gog sheets update 返回 400,提示 "values length does not match range"
原因:--values-json 的列数与范围的列数不一致
处理:核对范围列数与每行 values 的元素数;范围 A1:B2 对应 2 行 2 列,values 必须为 [["A","B"],["1","2"]]
现象:gog gmail search 返回 400,提示 "Invalid query"
原因:搜索语法使用了 Gmail 不支持的运算符,或引号未闭合
处理:使用 Gmail 官方支持的运算符(from:、to:、subject:、has:attachment、newer_than:、older_than: 等);含空格的关键词用双引号包裹,如 subject:"周报 评审"
现象:gog calendar events 返回 400,提示 "Invalid time"
原因:--from 或 --to 未使用 ISO8601 格式,或缺少时区标识
处理:时间必须为 ISO8601 带时区,如 2026-07-20T00:00:00Z 或 2026-07-20T00:00:00+08:00;不要用 2026-07-20 这种纯日期
现象:gog drive search 返回 400,提示 "Invalid query"
原因:使用了 Drive API 不支持的查询运算符,或运算符拼写错误
处理:使用 Drive 官方查询语法,如 name='报告'、mimeType='application/pdf'、modifiedTime > '2026-07-01T00:00:00';等号后值用单引号包裹
现象:尝试用 gog docs 修改文档内容但找不到对应子命令
原因:gog 的 docs 模块仅支持 export/cat/copy,不支持原位编辑
处理:原位编辑需使用 Google Docs API 客户端直接调用 documents:batchUpdate;gog 流程下可先 export 为 txt,本地编辑后重新上传为新文档
--account?设置环境变量 GOG_ACCOUNT=you@gmail.com,gog 会自动使用该账户作为默认账户,无需每次命令重复传入.
--values-json 和内联行参数有什么区别?--values-json 接收标准 JSON 二维数组(如 [["A","B"],["1","2"]]),推荐用于脚本化场景,可避免 shell 转义问题。内联行参数适合简单交互式调用,但含特殊字符时易出错.
不能。gog 的 docs 模块仅支持 export(导出)、cat(输出内容)、copy(复制文档)。原位编辑需要 Google Docs API 的 documents:batchUpdate 接口,不在 gog 范围内。常见替代流程是 export 为 txt 本地编辑后重新上传.
通过 --account 参数指定,或设置 GOG_ACCOUNT 环境变量切换默认账户。gog auth list 可查看所有已授权账户。不同账户的 OAuth token 相互隔离.
是的。发送邮件是不可逆操作,gog 默认在发送前会要求确认。脚本化场景可加 --no-input,但需自行承担误发风险。建议先 gog gmail send --dry-run 预览内容.
--input USER_ENTERED 与 RAW 有何区别?USER_ENTERED 表示值按用户在 UI 中输入的方式解析(如 =SUM(A1:A10) 会被识别为公式),RAW 表示值作为字面量原样写入(公式不会被计算)。默认为 USER_ENTERED,写入纯数据时建议显式指定以避免歧义.
gog auth add 刷新gog 不封装 Google Workspace 的权限管理与组织管理能力,仅处理个人账户维度操作| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 检索Gmail邮件 | 15分钟 | 1分钟 | 14分钟 | 100% |
| 发送Gmail邮件 | 5分钟 | 1分钟 | 4分钟 | 100% |
| 查询日历事件 | 10分钟 | 1分钟 | 9分钟 | 100% |
| 检索云盘文件 | 20分钟 | 2分钟 | 18分钟 | 100% |
| 列出联系人 | 15分钟 | 1分钟 | 14分钟 | 100% |
| 读取表格数据 | 30分钟 | 5分钟 | 25分钟 | 100% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 易用性 | 高 | 低 | 中 | 高 |
| 功能丰富度 | 高 | 低 | 中 | 高 |
| 效率 | 高 | 低 | 中 | 高 |
| 成本 | 低 | 高 | 中 | 高 |
| 学习曲线 | 低 | 高 | 中 | 高 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 操作繁琐 | 手动操作Google Workspace服务效率低下 | 影响工作效率 | 使用gog自动化操作 | 节约时间80% |
| 跨平台兼容性差 | 手动操作在不同操作系统间兼容性差 | 影响用户体验 | gog支持多平台 | 提升用户体验50% |
| 安全性低 | 手动操作容易泄露敏感信息 | 影响数据安全 | gog采用OAuth认证 | 提升安全性90% |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 无法登录 | API Key配置错误 | 检查API Key配置是否正确 | 重新配置API Key |
| 操作失败 | 网络连接问题 | 检查网络连接是否正常 | 检查网络连接,重试操作 |
| 权限不足 | 服务授权问题 | 检查服务授权是否正确 | 重新授权服务 |
| 输出格式错误 | 配置选项错误 | 检查配置选项是否正确 | 修正配置选项 |
| 无法检索文件 | 搜索语法错误 | 检查搜索语法是否正确 | 修正搜索语法 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |
针对命令行工具使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |