如何通过Google App Script区分Google表单未评分与零分响应?
区分Google表单未批改空白评分与零分的方法
你遇到的问题根源在于:未批改的响应调用getScore()时会默认返回0,和手动设置的零分结果完全一致,所以单纯靠分数值没法区分两者。解决办法是利用GradableResponse对象的isGraded()方法来判断响应是否已被批改:
- 未批改的响应:
isGraded()返回false - 已批改的响应(包括手动设置0分):
isGraded()返回true
修改后的代码如下:
function setNewGrades() { const form = FormApp.getActiveForm(); const items = form.getItems(FormApp.ItemType.TEXT); const responses = form.getResponses(); for(const response of responses){ for(const item of items){ const gradableResponse = response.getGradableResponseForItem(item); // 先判断是否已批改 const isGraded = gradableResponse.isGraded(); const itemScore = gradableResponse.getScore(); if(!isGraded){ Logger.log("此响应未批改"); } else { if(itemScore === 0){ Logger.log("此响应已批改,分数为0"); } else { Logger.log(`此响应已批改,分数为${itemScore}`); } } } } }
通过先检查isGraded()的结果,就能精准区分未批改的空白状态和手动设置的零分了。
内容的提问来源于stack exchange,提问作者stölpsel_neaty
相关产品推荐
相关产品推荐

