Install
openclaw skills install @thcjp/google-workspace-cliopenclaw skills install @thcjp/google-workspace-cli核心功能: 本技能提供中文交互、时使用、、工作流优化时使用、处理、工作流优化时使用等能力。
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 复杂工作流可视化编排 | 不支持 | 支持 |
| 条件分支与异常重试 | 不支持 | 支持 |
| 定时触发与事件驱动 | 不支持 | 支持 |
| 执行日志与审计追踪 | 不支持 | 支持 |
| 分布式任务调度与负载均衡 | 不支持 | 支持 |
详细的输入输出格式请参考下方章节说明。
企业行政人员需向 50 位参会者发送会议通知,通过脚本批量处理,自动跳过发送失败项.
# 批量发送脚本
#!/bin/bash
# batch_notify.sh - 批量会议通知
SUBJECT="2026 Q3 季度总结会议通知"
BODY="各位同事,定于2026年7月25日14:00在3号会议室召开Q3季度总结会议,请准时参加。"
# ...
while IFS=, read -r name email; do
echo "正在发送给: $name <$email>"
if gog gmail send --to "$email" --subject "$SUBJECT" --body "$BODY" --no-input; then
echo " [成功] $name"
else
echo " [失败] $name - 请手动重试"
fi
done < attendees.csv
attendees.csv 示例:
张三,zhangsan@company.com
李四,lisi@company.com
王五,wangwu@company.com
每日将销售数据自动写入 Google Sheets,无需手动打开表格录入.
#!/usr/bin/env python3
"""销售数据自动写入 Sheets"""
import subprocess
import json
from datetime import datetime
# ...
SHEET_ID = "your_sheet_id_here"
TODAY = datetime.now().strftime("%Y-%m-%d")
# ...
# 今日销售数据
sales_data = [
["2026-07-18", "华东区", "¥128,500", "32单"],
["2026-07-18", "华南区", "¥96,300", "28单"],
["2026-07-18", "华北区", "¥152,800", "41单"],
]
# ...
# 转为 JSON 格式
values_json = json.dumps(sales_data)
# ...
# 追加数据到 Sheets
subprocess.run([
'gog', 'sheets', 'append', SHEET_ID, '销售数据!A:D',
'--values-json', values_json,
'--insert', 'INSERT_ROWS',
'--no-input'
])
# ...
print(f"已写入 {len(sales_data)} 条销售记录")
项目结束后,将团队 Google Docs 批量导出为 PDF 归档存储.
# 批量导出文档
#!/bin/bash
# archive_docs.sh - 文档归档
ARCHIVE_DIR="/tmp/project_archive_$(date +%Y%m%d)"
mkdir -p "$ARCHIVE_DIR"
# ...
# 文档ID列表
doc_ids=(
"doc_id_1:需求文档"
"doc_id_2:设计稿说明"
"doc_id_3:测试报告"
"doc_id_4:上线 checklist"
)
# ...
for entry in "${doc_ids[@]}"; do
doc_id="${entry%%:*}"
name="${entry##*:}"
output="$ARCHIVE_DIR/${name}.pdf"
echo "正在导出: $name"
gog docs export "$doc_id" --format pdf --out "$output" --no-input
done
# ...
echo "归档完成,共 ${#doc_ids[@]} 份文档,存储于 $ARCHIVE_DIR"
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Google OAuth 凭据 | 凭据 | 必需 | Google Cloud Console 创建 |
| gog 命令行工具 | CLI | 必需 | 通过包管理器安装 |
| Google Workspace 账户 | 账户 | 必需 | 企业版或个人版均可 |
| Python 3.8+ | 运行时 | 推荐 | python.org 下载 |
| LLM API | API | 必需 | 由 Agent 内置 LLM 提供 |
client_secret.jsongog auth credentials /path/to/client_secret.json 导入凭据export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 否 | 处理的内容输入 |
| mode | string | 否 | 处理模式, 可选值: json/text/markdown |
| style | string | 否 | 输出风格, 参考 references/style.md |
{
"success": true,
"data": {
"result": "处理结果",
"status": "success",
"metadata": {
"metadata": {
"template_used": "reviewer",
"word_count": 0,
"style": "专业"
}
},
"error": null
}
输出模板参考: assets/output.json
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 输入content为空 | 用户未提供必要信息 | 提示用户提供content, 并给出示例格式 |
| 输入内容过长(>5000字) | 超出单次处理能力 | 建议分段处理, 每段不超过2000字 |
| 风格参数不识别 | 传入不支持的风格 | 列出支持的风格选项, 使用默认风格 |
| 生成内容不达标 | 质量校验未通过 | 自动1次, 仍不达标则标注问题返回 |
| 其他异常 | 内部处理异常 | 检查输入后 |
| 依赖项 | 类型 | 必需 | 说明 |
|---|---|---|---|
| LLM | 模型 | 是 | 需要LLM进行内容生成, 推荐GPT-4/智谱GLM-4/DeepSeek |
| API Key | 凭证 | 否 | 使用云端LLM时需要, 本地LLM不需要 |
| 国内替代方案: |
# ~/.gog/config 企业配置示例
default_account: admin@company.com
output_format: json
no_input: true
retry_count: 3
retry_interval: 5
# 默认账户
export GOG_ACCOUNT=you@company.com
# ...
# JSON 输出
export GOG_OUTPUT=json
# ...
# 不交互模式
export GOG_NO_INPUT=true
# ...
# 重试策略
export GOG_RETRY_COUNT=3
export GOG_RETRY_INTERVAL=5
#!/usr/bin/env python3
"""企业日报自动化工作流"""
import subprocess
import json
from datetime import datetime, timedelta
# ...
class WorkspaceAutomation:
def __init__(self, account):
self.account = account
self.base_cmd = ['gog', '--no-input', '--json', '--account', account]
# ...
def get_today_events(self):
"""获取今日日历事件"""
today = datetime.now().strftime('%Y-%m-%d')
result = subprocess.run(
self.base_cmd + ['calendar', 'events', 'primary',
'--from', f'{today}T00:00:00Z',
'--to', f'{today}T23:59:59Z'],
capture_output=True, text=True
)
return json.loads(result.stdout)
# ...
def get_unread_emails(self, max_count=20):
"""获取未读邮件"""
self.base_cmd + ['gmail', 'search', 'is:unread newer_than:1d',
'--max', str(max_count)],
capture_output=True, text=True
)
return json.loads(result.stdout)
# ...
def write_report(self, sheet_id, data):
"""将日报数据写入 Sheets"""
values_json = json.dumps(data)
subprocess.run(
self.base_cmd + ['sheets', 'append', sheet_id, '日报!A:E',
'--values-json', values_json, '--insert', 'INSERT_ROWS']
)
# ...
def generate_daily_brief(self, sheet_id):
"""生成并发送每日简报"""
events = self.get_today_events()
emails = self.get_unread_emails()
# ...
brief_data = [[
datetime.now().strftime('%Y-%m-%d'),
f'{len(events)} 场会议',
f'{len(emails)} 封未读邮件',
'自动生成',
'详情见说明'
]]
self.write_report(sheet_id, brief_data)
return f"日报已生成: {len(events)} 场会议, {len(emails)} 封未读邮件"
# ...
# 使用示例
automation = WorkspaceAutomation('you@company.com')
result = automation.generate_daily_brief('your_sheet_id')
print(result)
A: 通过 --account 参数或 GOG_ACCOUNT 环境变量切换。专业版支持账户组管理,可批量操作多账户:
# 账户 A 操作
gog gmail search 'is:unread' --account admin@company.com --max 10
# ...
# 切换到账户 B
export GOG_ACCOUNT=hr@company.com
gog gmail search 'is:unread' --max 10
A: 使用 --input USER_ENTERED 参数,确保数据按用户输入方式解析(如日期、货币格式自动识别):
gog sheets update <sheetId> "Sheet1!A1" \
--values-json '[["2026-07-18"]]' \
--input USER_ENTERED --no-input
A: Gmail 每日发送限额为 2000 封(普通账户)或 20000 封(Workspace 账户)。建议:
A: 确保文档内字体为 Google Docs 支持的中文字体(如 Noto Sans CJK)。导出时指定 --format pdf,如仍有问题可先导出为 docx 再本地转换.
A: 专业版所有命令均支持 --json 输出,可通过 subprocess 或 HTTP 包装层与 CRM、ERP 等系统集成。参考"自动化工作流模板"章节的 Python 示例.
A: 完全兼容。专业版沿用免费版的命令体系与配置文件,升级后原有脚本与凭据无需修改,直接获得高级功能权限.
| 错误场景(续) | 原因 | 处理方式 |
|---|---|---|
| LLM响应超时或无响应 | 网络延迟或模型负载过高 | 请求重试;确认Agent平台LLM服务正常 |
| 输入内容格式不正确 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求,参考示例章节 |
| 执行结果与预期不符 | 指令描述不够明确或上下文不足 | 提供更详细的指令描述,补充必要的上下文信息 |
| 命令执行失败 | 运行环境不满足要求或权限不足 | 确认运行环境符合依赖说明中的要求;检查命令权限设置 |
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 批量发送邮件 | 2小时 | 30分钟 | 1.5小时 | 100% |
| 更新日程事件 | 30分钟 | 5分钟 | 25分钟 | 100% |
| 下载Drive文件 | 1小时 | 10分钟 | 50分钟 | 100% |
| 写入Sheets数据 | 2小时 | 30分钟 | 1.5小时 | 100% |
| 导出Docs文档 | 1小时 | 10分钟 | 50分钟 | 100% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 操作便捷性 | 高 | 低 | 中 | 高 |
| 功能全面性 | 高 | 低 | 中 | 高 |
| 学习成本 | 低 | 高 | 中 | 高 |
| 执行效率 | 高 | 低 | 中 | 高 |
| 成本效益 | 高 | 低 | 中 | 高 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 邮件发送效率低 | 邮件发送需要逐个操作,效率低下 | 影响沟通效率 | 自动化批量发送邮件 | 提升效率50% |
| 数据录入错误 | 手动录入数据容易出错,影响数据准确性 | 影响决策准确性 | 自动化数据录入 | 提升准确率至100% |
| 文件管理复杂 | 文件管理需要逐个操作,管理复杂 | 影响工作效率 | 自动化文件管理 | 提升效率30% |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 无法登录 | 用户名或密码错误 | 检查用户名和密码是否正确 | 重新输入正确的用户名和密码 |
| 操作失败 | 网络连接问题 | 检查网络连接是否正常 | 修复网络连接或更换网络环境 |
| 文件无法下载 | 权限不足 | 检查账户权限 | 调整账户权限或联系管理员 |
| 数据无法写入 | 格式错误 | 检查数据格式是否正确 | 修正数据格式 |
| 脚本执行失败 | 脚本错误 | 检查脚本语法和逻辑 | 修正脚本错误 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |
针对"谷歌办公命令行专业版"使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |
针对"谷歌办公命令行专业版"使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |