Google表单Quiz AppScript设置错误反馈时触发参数不匹配异常
Google表单Quiz AppScript设置错误反馈时触发参数不匹配异常
嘿,我一眼就看出问题所在了——你遇到的这个参数不匹配异常,是因为setFeedbackForIncorrect()和setFeedbackForCorrect()这两个方法不能直接接收字符串,它们需要的是通过FormApp.createFeedback()构建的Feedback对象。
错误原因拆解
你原来的代码里直接把文本字符串传给了这两个方法:
question1.setFeedbackForIncorrect('Incorrect. Please try again.'); question1.setFeedbackForCorrect('Correct! Red,Green,Blue.');
但FormApp的方法签名明确要求这两个方法的参数是Feedback类型,不是普通字符串,所以系统才会抛出你看到的错误。
修复方案
你需要先创建Feedback对象,设置好反馈文本后再传递给这两个方法。下面是修改后的代码片段:
// 创建错误反馈对象并设置文本 var incorrectFeedback = FormApp.createFeedback().setText('Incorrect. Please try again.').build(); question1.setFeedbackForIncorrect(incorrectFeedback); // 创建正确反馈对象并设置文本 var correctFeedback = FormApp.createFeedback().setText('Correct! Red,Green,Blue.').build(); question1.setFeedbackForCorrect(correctFeedback);
完整的修复后代码
这里是替换了错误部分后的完整createQuiz()函数:
function createQuiz() { var form = FormApp.create('Quiz'); // Enable Quiz settings form.setIsQuiz(true); // Add the first question var question1 = form.addMultipleChoiceItem(); question1.setTitle('RGB stands for _______________.'); question1.setChoices([ question1.createChoice('Rod,Glue,Blue'), question1.createChoice('Red,Green,Blue', true), question1.createChoice('Reed,Green,Blur'), question1.createChoice('Rose,Girl,Bear') ]); question1.setRequired(true); question1.setPoints(1); // 修复:使用Feedback对象设置反馈 var incorrectFeedback = FormApp.createFeedback().setText('Incorrect. Please try again.').build(); question1.setFeedbackForIncorrect(incorrectFeedback); var correctFeedback = FormApp.createFeedback().setText('Correct! Red,Green,Blue.').build(); question1.setFeedbackForCorrect(correctFeedback); // Publish the form var formUrl = form.getPublishedUrl(); Logger.log('Form URL: ' + formUrl); }
这样修改后,你的代码就能正确设置问题的对错反馈了,不会再触发参数不匹配的异常。
备注:内容来源于stack exchange,提问作者SrK
相关产品推荐
相关产品推荐

