Apps 脚本:使用表单作为其他表单创建的模板
Apps script: use a form as a template for other forms creation
我有一个包含一组问题的表单,我想用它来创建其他表单。换句话说,我想遍历这个模板表单项,选择我需要的那些并将它们附加到另一个新创建的表单。
我在获取物品和选择我需要的物品方面没有问题;但是,我找不到将这些项目附加到另一种形式的方法——所有 Form.addSomethingItem()
方法都不带参数 (docs for example)。真的不可能,还是我错过了一些愚蠢的简单事情?
形成类似 addTextItem() don't take arguments, rather they return Items classes (e.g. TextItem) 的方法。这些项目 类 有自己的方法来为表单上的问题分配属性。
例子
这是添加具有特定标题的文本项的示例
form.addTextItem().setTitle('I am a text question title');
下面是一个将多项选择项添加到带有一些选项的表单的示例
var item = form.addMultipleChoiceItem();
var choices = ['choice 1', 'choice 2', 'choice 3'];
choices.forEach(function(choice) {
item.createChoice(choice);
})
有两种方法可以实现:
在新表单副本上就地制作 copy of the form using DriveApp
和 remove/modify 项目。
迭代现有项目,检查其类型并将它们添加到新表单。例如,以下获取 Item1 的枚举并将其转换为驼峰式字符串和 executes add{Type}Item
method, where Type
is MultipleChoice
in case of MULTIPLE_CHOICE
Enum Item type.
const newForm2Item0 = Form2[
`add${String(Form1.getItems()[0].getType())
.toLowerCase()
.replace(/(^|_)[A-Z]/gi, match =>
match.toUpperCase().replace('_', '')
)}Item`
]();//equivalent to Form2.addMultipleChoiceItem()
然后您可以以类似的方式根据需要添加选项和其他配置。
我有一个包含一组问题的表单,我想用它来创建其他表单。换句话说,我想遍历这个模板表单项,选择我需要的那些并将它们附加到另一个新创建的表单。
我在获取物品和选择我需要的物品方面没有问题;但是,我找不到将这些项目附加到另一种形式的方法——所有 Form.addSomethingItem()
方法都不带参数 (docs for example)。真的不可能,还是我错过了一些愚蠢的简单事情?
形成类似 addTextItem() don't take arguments, rather they return Items classes (e.g. TextItem) 的方法。这些项目 类 有自己的方法来为表单上的问题分配属性。
例子
这是添加具有特定标题的文本项的示例
form.addTextItem().setTitle('I am a text question title');
下面是一个将多项选择项添加到带有一些选项的表单的示例
var item = form.addMultipleChoiceItem();
var choices = ['choice 1', 'choice 2', 'choice 3'];
choices.forEach(function(choice) {
item.createChoice(choice);
})
有两种方法可以实现:
在新表单副本上就地制作 copy of the form using
DriveApp
和 remove/modify 项目。迭代现有项目,检查其类型并将它们添加到新表单。例如,以下获取 Item1 的枚举并将其转换为驼峰式字符串和 executes
add{Type}Item
method, whereType
isMultipleChoice
in case ofMULTIPLE_CHOICE
Enum Item type.
const newForm2Item0 = Form2[
`add${String(Form1.getItems()[0].getType())
.toLowerCase()
.replace(/(^|_)[A-Z]/gi, match =>
match.toUpperCase().replace('_', '')
)}Item`
]();//equivalent to Form2.addMultipleChoiceItem()
然后您可以以类似的方式根据需要添加选项和其他配置。