Google表单 - 获取多项选择响应的索引

时间:2014-02-03 08:56:30

标签: google-apps-script google-sheets google-form

我有一个Google表单,其中包含几个具有文本答案的多项选择题。 我可以在表单中循环所有问题并使用以下方法获取答案的文本值:

for(var i in headers) {
  message += e.namedValues[headers[i]].toString() + "\n\n"; 
}

但是,我还想检索每个选定答案的索引,以便提供分数。

请注意 - 如果我的表单中有以下多项选择题:

空腹吞咽的空速是多少?

答案是:

  • 5
  • 3
  • 欧洲人还是非洲人?

如果提交者回答“欧洲人或非洲人?”我想获得该响应的索引 - 即数字2。

谢谢!

2 个答案:

答案 0 :(得分:0)

答案 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;
    };
  }
}

需要注意的事项:

  1. 本答案中给出的示例只是一个概念,而不是代码的优化或完全测试版本。
  2. mChoiceIndex此处是表单上相同 ItemType 的索引。它遵循他们在运行时中呈现的顺序,而不是设计时,尤其是当您有条件页面中断/部分时。