谷歌表单多选其他选项从应用程序脚本提交时不可见



我有一个谷歌表单,其中有一个多选题"Territory字段";。该字段有两个有效答案

  1. 美国和
  2. 其他(当您选择其他选项时,您可以在文本区域写下任何国家/地区名称(现在我正在尝试使用谷歌应用程序脚本提交此表单。在从应用程序脚本提交时,如果我将这个多选问题的答案发送为";美国";它的工作。我想在提交表格时发送其他人作为这个问题的答案。有人能帮我吗。我在下面附上了场地和脚本的图片以供参考

具有多选的表单字段的图片

我正在尝试使用谷歌脚本(下面提到的脚本的一部分(提交此表单

var formID = "xxxxxxxxxxxxxxxxxxxxxx";
var Formobj= FormApp.openById(formID);
var formResponse = Formobj.createResponse();
var items = Formobj.getItems();
var territory =  items[1]
var territoryvalue = "United States"

if (territoryvalue.indexOf("United States") !== -1)
{
var territoryfield = territory.asMultipleChoiceItem()
var territoryresponse = territoryfield .createResponse([["United States"]])
formResponse.withItemResponse(territoryresponse);
}

表单提交后的字段值,美国作为答案

需要帮助以";其他";作为答案

MultipleChoiceItem.createResponse()的文档如下:

为这个多选项创建一个新的ItemResponse。如果响应参数与此项的有效选择不匹配,则引发异常,除非showOtherOption(enabled)设置为true。

因此;其他";响应,只需将值传递给它。

var territoryresponse = territoryfield.createResponse([["Other Country"]])

如果要在表单中添加一个新值作为可选选项,则可以创建一个新选项,然后设置项目选项。

var territory = items[0].asMultipleChoiceItem();
var newCountryChoice = territory.createChoice("Another Country");
var choices = territory.getChoices(); // Get the existing choices
choices.push(newCountryChoice); // Append the new choice to the list of existing
territory.setChoices(choices); // Set the updated choices

我看到你在Issue Tracker中提交了一个bug,根据你的解释,我终于可以理解这个问题了。

这似乎是一个错误:

在Forms中,如果通过Apps Script将多选项与Other选项一起提交,则在尝试编辑响应时不会填充此其他选项。如果响应是通过UI提交的,则会填充Other选项。

需要注意的是,响应本身已成功提交,可以在表单的Responses选项卡中看到;只是在尝试编辑响应时没有填充它

复制步骤:

  1. 创建一个新表单
  2. 为表单创建一个Multiple choice item(如果还没有(
  3. 单击"add "Other""以获得Other option
  4. 单击Settings(齿轮图标(并选中选项响应者可以:提交后编辑
  5. 打开绑定到表单的脚本编辑器,复制并运行以下代码:
function submitAndGetEditResponse() {
var form = FormApp.getActiveForm();  
var item = form.getItems()[0].asMultipleChoiceItem();
var otherOption = "Option 2"; // Not one of the named options
var itemResponse = item.createResponse([[otherOption]]);
var formResponse = form.createResponse().withItemResponse(itemResponse);  
var editUrl = formResponse.submit().getEditResponseUrl();
console.log(editUrl);
return editUrl;
}
  1. 使用浏览器访问URL(editUrl(
  2. 尝试编辑响应时应该填充Option 2,但它不是

问题跟踪器:

你在issue Tracker中提交的问题刚刚被谷歌内部转发:

  • 通过谷歌应用程序脚本提交谷歌表格-多选题的其他选项未填充

任何受此影响的人,请考虑单击左上角的星号,以跟踪它并帮助确定它的优先级。

我尝试复制您的代码,并获得了您想要的解决方案。

如果你想要你的";其他";在个人回答中勾选的答案。您的响应字符串应该如下所示:其他选项(国家(";

例如,如果您希望墨西哥出现在";其他:";选项,您应该写"__其他选择墨西哥";作为地域值变量的值。在代码的那部分应该是这样的:

var territoryvalue = "__other_option__ Mexico"

相关内容

  • 没有找到相关文章

最新更新