我有一个Google表单,其中包含几个具有文本答案的多项选择题。 我可以在表单中循环所有问题并使用以下方法获取答案的文本值:
for(var i in headers) {
message += e.namedValues[headers[i]].toString() + "\n\n";
}
但是,我还想检索每个选定答案的索引,以便提供分数。
请注意 - 如果我的表单中有以下多项选择题:
空腹吞咽的空速是多少?
答案是:
如果提交者回答“欧洲人或非洲人?”我想获得该响应的索引 - 即数字2。
谢谢!
答案 0 :(得分:0)
使用类FormResponse(https://developers.google.com/apps-script/reference/forms/form-response)
和方法ItemResponse.asMultipleChoiceItem(https://developers.google.com/apps-script/reference/forms/item#asMultipleChoiceItem())
和方法MultipleChoiceItem.getIndex()(https://developers.google.com/apps-script/reference/forms/multiple-choice-item#getIndex())
答案 1 :(得分:0)
MultipleChoiceItem.getIndex()
方法仍然是获得多项选择题项的索引,而不是选择的多项选择索引。要获取所选选项的索引,请使用MultipleChoiceItem.getChoices()
,然后遍历choices[]
数组,将所选选项与choices[]
数组的每个值进行比较。如果选择值=选择的选项,则将数组的索引作为选定的选择索引:
// Add this function to 'on form submit' trigger.
function onFormSubmit(e) {
var selectChoiceIndex = getSelectedChoiceIndex(e);
}
function getSelectedChoiceIndex(e) {
var form = FormApp.getActiveForm();
var mChoiceIndex = 1; // Assuming 1 is your mutiple-choice question index.
var formResponse = e.response;
var itemResponses = formResponse.getItemResponses();
var selectedChoice = itemResponses[mChoiceIndex].getResponse();
var choices = form.getItems(FormApp.ItemType.MULTIPLE_CHOICE)[mChoiceIndex].asMultipleChoiceItem().getChoices();
for (i = 0; i < choices.length; i++) {
if (selectedChoice == choices[i]) {
return i;
};
}
}
需要注意的事项:
mChoiceIndex
此处是表单上相同 ItemType 的索引。它遵循他们在运行时中呈现的顺序,而不是设计时,尤其是当您有条件页面中断/部分时。