google-apps-script - 我可以通过脚本从没有任何脚本的表单中添加复选框选项吗
问题描述
我在不使用 google 脚本的情况下创建了一个表单,然后制作了一个通过 Id 打开表单的脚本。我想知道是否可以在表单上的第二个复选框问题中添加一个复选框选项。所以我想出的是在另一个函数中创建选项并将其传递给 addOption。我这样做的方式有效,但它取代了我之前添加到项目中的任何内容。我想现在的问题是如何在不替换之前的选项的情况下添加更多选项。
function addOption(option) {
var a = form.getItems(FormApp.ItemType.CHECKBOX)[1].asCheckboxItem();
a.setChoiceValues(option);
}
解决方案
注意:假设您只想在现有选项中添加一个选项。
您的代码中的问题是您使用函数 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
推荐阅读
- python - 如何按照我的意愿将每个分类唯一值编码为数值?
- python - django // 条件设置取决于 aws 实例服务器
- protractor - 如何调试(量角器)cucumberjs 框架“找不到步骤定义”问题?
- javascript - tfjs, [1, 0, 0] 打印为 [true, false false]
- laravel - 如何搜索与 DataTables 相关的列?
- python - 如何告诉 make 跟踪 python 脚本的输出并仅在输入文件已更新时才运行脚本
- algorithm - LeetCode Android 解锁问题 351 > 有效跳转
- python - Python Selenium查找页面中是否存在具有等于某个值的属性的元素
- windows - iracket 找不到 jupyter,即使它已经安装
- javascript - HTML preload link not not working to load fetch