我可以通过脚本从没有任何脚本的表单中添加复选框选项吗

时间:2019-06-24 18:01:37

标签: google-apps-script google-form

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

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

1 个答案:

答案 0 :(得分:0)

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

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

另一件事是,在这种情况下,最好使用setChoices [1]而不是setChoicesValues [1],因为setChoicesValues与String数组一起使用,并且从getChoices [1]中获得的是Choice数组。因此,基本上,创建新的Choice对象并将其添加到Choice数组中比遍历Choices数组,获取每个Choice的字符串并以此创建一个字符串Array(并添加新的字符串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