我有一个谷歌表单,其中有一个多选题"Territory字段";。该字段有两个有效答案
- 美国和
- 其他(当您选择其他选项时,您可以在文本区域写下任何国家/地区名称(现在我正在尝试使用谷歌应用程序脚本提交此表单。在从应用程序脚本提交时,如果我将这个多选问题的答案发送为";美国";它的工作。我想在提交表格时发送其他人作为这个问题的答案。有人能帮我吗。我在下面附上了场地和脚本的图片以供参考
具有多选的表单字段的图片
我正在尝试使用谷歌脚本(下面提到的脚本的一部分(提交此表单
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
选项卡中看到;只是在尝试编辑响应时没有填充它。
复制步骤:
- 创建一个新表单
- 为表单创建一个
Multiple choice item
(如果还没有( - 单击"
add "Other"
"以获得Other option
- 单击
Settings
(齿轮图标(并选中选项响应者可以:提交后编辑 - 打开绑定到表单的脚本编辑器,复制并运行以下代码:
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;
}
- 使用浏览器访问URL(
editUrl
( - 尝试编辑响应时应该填充
Option 2
,但它不是
问题跟踪器:
你在issue Tracker中提交的问题刚刚被谷歌内部转发:
- 通过谷歌应用程序脚本提交谷歌表格-多选题的其他选项未填充
任何受此影响的人,请考虑单击左上角的星号,以跟踪它并帮助确定它的优先级。
我尝试复制您的代码,并获得了您想要的解决方案。
如果你想要你的";其他";在个人回答中勾选的答案。您的响应字符串应该如下所示:其他选项(国家(";
例如,如果您希望墨西哥出现在";其他:";选项,您应该写"__其他选择墨西哥";作为地域值变量的值。在代码的那部分应该是这样的:
var territoryvalue = "__other_option__ Mexico"