核心用法
gws-forms 是 Google Workspace CLI (gws) 的表单管理子命令,提供对 Google Forms API 的完整命令行封装。核心工作流遵循「创建→更新→收集」三步模型:
1. 创建表单:gws forms create --params title="调查问卷" —— 仅能设置标题,返回 formId
2. 批量更新:gws forms batchUpdate --params formId=xxx --json '[...items]' —— 添加题目、设置逻辑
3. 获取数据:gws forms responses list --params formId=xxx —— 拉取提交记录
其他关键操作包括:
get—— 导出完整表单结构(题目、设置、发布状态)setPublishSettings—— 控制表单公开范围(需非旧版表单)watches—— 订阅表单变更事件,实现实时同步
参数构建技巧
使用 gws schema forms.<resource>.<method> 预检 API 所需的字段类型、枚举值和嵌套结构,避免 400 错误。复杂 payloads 建议写入 JSON 文件并通过 --json @file.json 加载。
显著优点
- 自动化友好:纯 CLI 交互,无缝嵌入 CI/CD、crontab、shell 脚本
- 批量操作原子性:
batchUpdate支持事务性提交,失败自动回滚 - 事件驱动架构:
watches资源支持 Cloud Pub/Sub 推送,替代轮询 - 与 Workspace 生态深度整合:天然继承 Google 账号权限体系、版本历史、协作编辑
潜在缺点与局限性
- 创建限制:
create方法仅接受title和document_title,所有题目必须通过二次batchUpdate注入,增加脚本复杂度 - 旧版表单兼容性:
setPublishSettings明确不支持无publish_settings字段的 Legacy Forms - 无内置模板机制:需自行管理 JSON 模板文件,无官方预设题库
- 响应数据非实时:极端情况下存在秒级延迟,不适合高频毫秒级场景
适合人群
- 运维工程师:自动化批量生成标准化问卷(入职调查、设备申领)
- 数据分析师:定时 ETL 抓取表单响应至数据仓库
- 教育技术管理员:批量配置课程评估表单、设置提交截止提醒
- 低代码开发者:作为 n8n、Make、GitHub Actions 的自定义节点后端
常规风险
- OAuth 范围泄露:
gws需forms与drive双重授权,脚本中硬编码 token 可能导致横向越权 - batchUpdate 不可逆:删除题目或清空响应的操作无软删除确认,误操作数据永久丢失
- Rate Limit 隐性触发:Google Forms API 默认 100 quota units/用户/100秒,批量脚本需内置指数退避
- 并发编辑冲突:多用户同时
batchUpdate同一表单可能产生版本覆盖,需外加分布式锁