允许用户向Google表单添加其他选项

时间:2016-11-30 00:35:31

标签: google-apps-script google-form

我试图创建一个Google表单投票,其中的选项是用户生成的(就像旧的Facebook问题调查一样,在他们被带走之前)。因此,用户可以投票选择已经列出的选项之一,或者添加"其他"选项,然后将显示给其他用户投票。

我使用的代码基于我在Google讨论组中找到的代码:

function addOption(e) {
  try {
    var form = FormApp.getActiveForm();
    var formResponse = e.response;
    var itemResponses = formResponse.getItemResponses();

    for (var j = 0; j < itemResponses.length; j++) {
      var itemResponse = itemResponses[j];
      var id = itemResponse.getItem().getId();
      var item = form.getItemById(id).asMultipleChoiceItem();
      var choices = item.getChoices();
      choices.push( item.createChoice(itemResponse.getResponse()) );
      item.setChoices(choices);
    }
  } catch (err) { Logger.log(err); }
}

它按预期将用户生成的选项添加到列表中,但现在如果您对其中一个现有选项进行投票,则会添加您投票选项的副本。

In this example

在这个例子中,我第一次在两个问题中投了Other并添加了选项Test 1.1Test 2.1。第二次,我在第一个问题中投票Option 1,在第二个问题投票Test 2.1

我不确定如何检查选项是否已存在,并将投票添加到已存在的选项中。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您正在获取物品ID:

var id = itemResponse.getItem().getId();
var item = form.getItemById(id).asMultipleChoiceItem();

您应该在某处记录项目ID,因为您要添加选项的项目ID将永远不会更改为表单,除非您删除了问题,并添加了另一个问题。您可以将ID硬编码为常量,或使用PropertiesService将ID存储在文档属性中。