GAS开发Google Form Quiz如何为Grid item设置正确答案
GAS设置Google Form网格题(GridItem)正确答案的相关说明
核心结论
当前Google Apps Script官方提供的FormApp服务暂不支持直接为网格类题目(包括单选网格GridItem、多选网格CheckboxGridItem)预设测验正确答案。目前仅单选题、多选题、普通复选框题、简答题等基础题型开放了原生的正确答案配置接口,网格类题型的对应配置接口尚未公开,无法通过原生GAS方法直接实现该需求。
替代实现方案
如果需要实现网格题的自动判分,可以通过绑定表单提交触发器的方式,自定义判分逻辑实现:
- 提前在表单编辑器中将目标网格题设置为「评分题」,配置好对应总分
- 编写自定义判分脚本,在表单提交时读取用户提交的网格题答案,和预设的正确答案比对后手动写入得分,参考代码如下:
// 提前配置网格题的正确答案,key为网格行文本,value为对应正确的列选项文本 const GRID_CORRECT_ANSWER = { "问题行1": "正确选项1", "问题行2": "正确选项3", "问题行3": "正确选项2" } // 表单提交触发的判分函数 function judgeGridAnswer(e) { const submitResponse = e.response; const allItemRes = submitResponse.getItemResponses(); allItemRes.forEach(itemRes => { const currentItem = itemRes.getItem(); // 判断是否为单选网格题,多选网格对应类型为FormApp.ItemType.CHECKBOX_GRID if (currentItem.getType() === FormApp.ItemType.GRID) { const userAnswer = itemRes.getResponse(); const gridRows = currentItem.asGridItem().getRows(); let getScore = 0; // 逐行比对答案统计得分 gridRows.forEach((rowText, idx) => { if(userAnswer[idx] === GRID_CORRECT_ANSWER[rowText]) { getScore += 2; // 每行对应分值可根据需求自定义 } }) // 写入该题得分 const grade = FormApp.createGrade(getScore).build(); submitResponse.setGradeForItem(currentItem, grade); } }) // 提交评分结果 submitResponse.submitGrades(); }
- 给上述脚本绑定表单的「表单提交」可安装触发器,授予对应权限后即可生效。
内容的提问来源于stack exchange,提问作者Natsuki
相关产品推荐
相关产品推荐

