google-apps-script - 创建一个数组,在 Google 表单的 setchoices 中将答案选项分配为 true 或 false
问题描述
我想就我遇到的问题提出一些建议。我想做一个在谷歌表格中设置的自我评分多项选择测验。我希望一些问题有多个答案,因此我需要做出一系列选择,根据它是否出现在答案数组中,将每个答案分配为真或假。但是,使用我目前拥有的代码,答案在 Google 表单测验中正确显示为正确,但每个问题的所有答案都重复 4 次,这意味着我的 for 循环不正确,但我不能,终生我,看看我犯了什么错误。任何帮助都会很棒,谢谢!
//make Multiple-Choice question
function makeMultipleQ(data) { //data- a row of spreadsheet dataRange
var question = data[2]
var questionNumber = data[0]
var answer = data[9]
var item = form.addMultipleChoiceItem(); //form to add choice
item.setTitle(questionNumber + '. ' + question)
var trimmedData = data.filter(function(str) {
return /\S/.test(str)
})
var slicedData = [1,2,3,4]
var answers = [1,2,6,7,8,9]
var choices = []; //array of choices
for (var i = 0; i < slicedData.length; i++) {
for (var k = 0; k < answers.length; k++){
if (slicedData[i] == answers[k]) {
choices.push(item.createChoice(answers[k],true))
}
else {
choices.push(item.createChoice(slicedData[i],false)); //wrong answer pushed to choices
}
}
}
Logger.log(choices)
item.setChoices(choices); //set the choices array to this itemQ
}
这是 Google 表单上的输出:
解决方案
问题:
- 不必要的循环嵌套。对于
i
外循环中的每个,内循环将运行到完成k
。
解决方案:
- 用于
indexOf
检查内部answers
数组而不是再次循环
片段:
if (answers.indexOf(slicedData[i]) !== -1) {//k loop removed
choices.push(item.createChoice(slicedData[i],true))
}
推荐阅读
- ios - 运行 hotrestart 时出错:“发生意外错误,进程已终止”
- php - 用 php 和 curl 显示 instagram 提要是一种好方法吗?
- javascript - 将输入给定值更改为 ReactJS 中的自定义值
- android - NetworkBoundResource 中的 ClassCastException
- shell - 使用 go 获取 shell 名称
- jenkins - 在 Jenkins 管道之间共享文件
- mariadb - 升级 MariaDB 时的 SSH 问题
- spring - Class.java:-2 处的 java.lang.NoClassDefFoundError
- ios - NSDateComponents:获取最近的未来日期
- python - 使用 python boto3 在 Route53 中管理具有多个 IP 的 A 记录