我试图创建一个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); }
}
它按预期将用户生成的选项添加到列表中,但现在如果您对其中一个现有选项进行投票,则会添加您投票选项的副本。
在这个例子中,我第一次在两个问题中投了Other
并添加了选项Test 1.1
和Test 2.1
。第二次,我在第一个问题中投票Option 1
,在第二个问题投票Test 2.1
。
我不确定如何检查选项是否已存在,并将投票添加到已存在的选项中。有什么想法吗?
答案 0 :(得分:0)
您正在获取物品ID:
var id = itemResponse.getItem().getId();
var item = form.getItemById(id).asMultipleChoiceItem();
您应该在某处记录项目ID,因为您要添加选项的项目ID将永远不会更改为表单,除非您删除了问题,并添加了另一个问题。您可以将ID硬编码为常量,或使用PropertiesService将ID存储在文档属性中。