首页 > 解决方案 > 我可以通过脚本从没有任何脚本的表单中添加复选框选项吗

问题描述

我在不使用 google 脚本的情况下创建了一个表单,然后制作了一个通过 Id 打开表单的脚本。我想知道是否可以在表单上的第二个复选框问题中添加一个复选框选项。所以我想出的是在另一个函数中创建选项并将其传递给 addOption。我这样做的方式有效,但它取代了我之前添加到项目中的任何内容。我想现在的问题是如何在不替换之前的选项的情况下添加更多选项。

function addOption(option) {
  var a = form.getItems(FormApp.ItemType.CHECKBOX)[1].asCheckboxItem();
  a.setChoiceValues(option);
}     

标签: google-apps-scriptgoogle-forms

解决方案


注意:假设您只想在现有选项中添加一个选项。

您的代码中的问题是您使用函数 setChoicesValues() [1] 用新选择覆盖所有先前的选择。您首先需要获取选项数组,将新选项添加​​到数组中,然后将新选项数组设置为 CheckboxItem。

另一件事是,在这种情况下,最好使用 setChoices [1] 而不是 setChoicesValues [1],因为 setChoicesValues 与 String 数组一起使用,而您从 getChoices [1] 获得的是 Choice 数组。所以基本上,创建新的 Choice 对象并将其添加到 Choice 数组比遍历 Choices 数组、获取每个 Choice 的字符串并使用它创建一个字符串数组(并添加新的字符串选项)更容易。

我对您的代码进行了一些调整,测试并成功运行:

function addOption() {
  var form = FormApp.openById('XXXXX');
  var option = "IT WORKS";

  var a = form.getItems(FormApp.ItemType.CHECKBOX)[1].asCheckboxItem();

 //Create the choice object 
  var option = a.createChoice(option);

//Get all the choices and add the new one to the array
  var options = a.getChoices();
  options.push(option);

//Set the new choices using the Choice array
  a.setChoices(options);
} 

我将 option 变量用作字符串,然后创建了 Choice 对象,如果您已经将 option 参数作为 Choice 对象传递,则应该删除该行。

[1] https://developers.google.com/apps-script/reference/forms/checkbox-item


推荐阅读