【问题标题】:Google form Multiple Choice Other option not visible when submitted from app script从应用脚本提交时,Google 表单多项选择其他选项不可见
【发布时间】:2020-11-26 11:55:35
【问题描述】:

我有一个谷歌表单,其中有一个选择题“领土字段”。该字段有两个有效答案

  1. 美国和
  2. 其他(当您选择其他选项时,您可以在文本区域中写下任何国家/地区名称) 现在我正在尝试使用谷歌应用脚​​本提交此表单。如果我将这个多项选择问题的答案作为“美国”发送,则从应用脚本提交时,它正在工作。我想在提交表单时发送其他人作为这个问题的答案。谁能帮我吗。我在下面包含字段和脚本的图片以供参考。

Picture of form field with multiple choice

我正在尝试使用 google 脚本(下文提到的部分脚本)提交此表单。

  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);
  }

Field value after form is submitted with United states as answer

在以“其他”为答案的情况下提交此表单时需要帮助

【问题讨论】:

  • 我不确定我是否理解。响应 Mexico(或其他任何内容)将不会出现在 Questions 选项卡中,但会出现在 Responses 选项卡 (screenshot) 中。您在哪里看到空白字段?
  • 对不起,如果我的问题没有太多描述性。有一个多项选择题,其中有两个选项 - 美国和其他(谷歌形式的功能,允许用户输入任何其他没有选择项的文本)。在从 script 提交表单时,我们正在发送这个多项选择的答案 - 如果我们以美国的形式发送答案,它也会接受并显示。我正在尝试找到一种方法将“其他人”作为此多项选择题的答案。
  • 是的,我明白了。我的问题与是什么让您认为未发送答案有关。我试图重现这一点,它肯定是为我发送的(我可以在Responses 选项卡中看到我发送屏幕截图的响应)。只要我加formResponse.submit(),当然可以。
  • @lamblichus 我的答案正在发送,但是当我打开表单时,答案不可见。但是正如您在屏幕截图中发送的那样,您有两个选项 1. 美国和 2. 墨西哥。但是我有两个选项 1.United States 和 2. Other:____ ,当您选择 other 选项时,您必须手动输入国家名称。我正在尝试使用此其他选项作为答案提交表单。如果我有两个单选按钮,例如美国和墨西哥,那么它的工作正常,就像你的截图一样。
  • 没有。在Responses 选项卡中,它显示Mexico,因为这是在Other: 选项中写入的内容。我的表单中没有选项Mexico,只有United StatesOtherthat's what my form looks like。当然,使用此表单,如果我通过在Other: 中输入Mexico 来提交答案,则可以成功看到该响应。我的猜测是,您在错误的地方寻找答案Mexico。您应该检查Responses 选项卡。

标签: google-apps-script google-forms google-apps-script-api


【解决方案1】:

MultipleChoiceItem.createResponse() 的文档内容如下:

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

所以要提交“其他”响应,只需将值传递给它。

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

如果您想在表单中添加一个新值作为可选选项,则可以create a new choice,然后set the item choices

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

【讨论】:

  • 我尝试了同样的方法,但它没有出现。仅对于美国它会显示,如果我传递它在后端响应谷歌表中显示但不在表单中显示的任何其他值
  • @roshankumar 我怀疑你问的是如何在表单中添加另一个国家作为选项,而不是如何提交其他回复。请检查我的更新答案。
【解决方案2】:

我看到你在问题跟踪器中提交了一个错误,根据你的解释,我终于明白了这个问题。

这似乎是一个错误:

在表单中,如果 Multiple choice item 通过 Apps 脚本与 Other 选项一起提交,则在尝试编辑响应时不会填充此其他选项。如果响应是通过 UI 提交的,则会填充 Other 选项。

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

重现步骤:

  1. 创建new Form
  2. 为表单创建一个Multiple choice item,如果还没有的话。
  3. 单击add "Other" 以获得Other option
  4. 点击Settings(齿轮图标)并选中选项受访者可以:提交后编辑
  5. 打开绑定到Form的脚本编辑器,复制并运行以下代码:
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 应在尝试编辑响应时填充,但不是。

问题跟踪器:

您在问题跟踪器中提交的问题刚刚被 Google 内部转发:

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

【讨论】:

    【解决方案3】:

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

    如果您希望在个人回复中勾选“其他”答案。您的响应字符串应如下所示:“other_option (Country)”

    例如,如果您希望墨西哥出现在“Other:”选项中,则应将“__other_option Mexico”写为territoryvalue 变量的值。在你的那部分代码中应该是这样的:

    var territoryvalue = "__other_option__ Mexico"
    

    【讨论】:

    • 我尝试了同样的方法,但它没有出现。仅适用于美国,如果我是“其他”,它会显示在后端响应谷歌表中,但不会显示在表单中
    • 我明白了。请查看我的更新答案,如果这能解决您的问题,请告诉我。
    • @roshankumar 让我知道这是否能解决您的问题。 :)
    • 我试过这个,当我只发送 other_option 时,其他字段的单选按钮被点击,但我无法发送其他国家/地区名称。看起来像一个错误。我在谷歌问题跟踪器中提出了它。如果您也能够复制此问题,请将其标记为星号。 issuetracker.google.com/issues/174303428
    • 您无法发送其他国家/地区名称是什么意思?你检查过我更新的答案吗?每当我提交“other_option墨西哥”时,都会勾选“其他:”选项并记录墨西哥国家/地区。
    猜你喜欢
    • 2017-01-30
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多