如何用Google Apps Script限制Google表单线性量表全选同值提交
实现步骤
第一步:打开表单对应的脚本编辑器
- 打开你的Google表单,点击右上角三个点,选择「<> 脚本编辑器」,进入Apps Script开发界面
- 删除默认的
myFunction空函数代码
第二步:粘贴校验代码
直接使用下方代码,逻辑已适配需求:
// 表单提交触发的校验函数 function onFormSubmit(e) { // 获取本次提交的所有回答 const response = e.response; const itemResponses = response.getItemResponses(); // 存储所有线性量表题的答案 const scaleScores = []; // 遍历所有问题,筛选出线性量表类题目并收集答案 itemResponses.forEach(itemRes => { const itemType = itemRes.getItem().getType(); // 线性量表的类型枚举为LINEAR_SCALE if (itemType === FormApp.ItemType.LINEAR_SCALE) { scaleScores.push(Number(itemRes.getResponse())); } }); // 校验:所有线性量表答案是否完全相同 const allSame = scaleScores.every(score => score === scaleScores[0]); if (allSame && scaleScores.length > 0) { // 删除本次无效提交 response.delete(); // 抛出错误,用户端会直接弹出你设置的提示 throw new Error("抱歉,不允许所有答案选择相同选项"); } }
第三步:配置表单提交触发器
- 在脚本编辑器页面,点击左侧菜单栏的「闹钟」图标(触发器)
- 点击右下角「添加触发器」按钮,按如下规则配置:
- 选择要运行的函数:
onFormSubmit - 选择要运行的部署:默认
Head即可无需修改 - 选择事件来源:
来自表单 - 选择事件类型:
表单提交时
- 选择要运行的函数:
- 点击保存,按照页面提示授权你的Google账号权限即可完成配置
注意事项
- 表单内如果有除线性量表外的其他题型不影响校验逻辑,代码会自动过滤只校验线性量表的答案
- 后续如果增减线性量表题数不需要修改代码,逻辑会自动适配
- 授权时如果出现「此应用未经过Google验证」的提示,点击「高级」-「前往[你的脚本名称]」继续授权即可,自己开发的脚本不存在安全风险
内容的提问来源于stack exchange,提问作者mahnaz hussien
相关产品推荐
相关产品推荐

