【发布时间】:2021-09-01 22:30:24
【问题描述】:
我想使用电子表格中的列表为不同的课程创建多个表单。我有为每个类构建一个新表单的简单代码,但我想为每个新表单添加一些表单元素。我知道如何使用脚本中想要的元素构建单个表单,并且知道如何使用脚本从表单中提取表单名称来构建一堆空表单。但我正在努力使用该脚本 forEach 部分的语法来将表单项添加到每个新表单。
function createForms() {
const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet5');
const range = ss.getDataRange().getValues();
range.forEach(item => FormApp.create(item));
这段代码为工作表 5 中的每个项目创建了一个新表单。现在,当它遍历这些新表单时,我想为每个表单添加一些项目。我不确定如何让 forEach 语句遍历表单并向每个表单添加项目。
我们将不胜感激。
我已经试过了,但它不起作用。
function createForms() {
const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet5');
const range = ss.getDataRange().getValues();
range.forEach(item => FormApp.create(item))
const form = FormApp.create(item);
form.addTextItem()
.setTitle('Name')
}
收到答复后(谢谢),我修改了脚本,它正在创建表格,如电子表格中的列表所示。最后,我希望在父文件夹中创建表单,并为每个表单创建一个新文件夹。
function createForms() {
//use this to force email text box to be email address
const emailValidation = FormApp.createTextValidation()
.setHelpText('Input must be email address.')
.requireTextIsEmail()
.build();
const parentFolder = DriveApp.getFolderById('PUT YOUR FOLDER ID HERE');
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('courses');
let values = ss.getDataRange().getValues();
for (let i = 0; i < values.length; i++) {
let form = FormApp.create(values[i]);
form.addTextItem().setTitle("Name").setHelpText('Please enter your full name').setRequired(true);
form.addTextItem().setTitle("Email Address").setRequired(true).setValidation(emailValidation).setHelpText('An email address is required');
form.addParagraphTextItem().setTitle('Details').setHelpText('Please provide the details you need to explain').setRequired(true);
form.addMultipleChoiceItem().setTitle("Day Choice").setHelpText('Choose the best day for you').setRequired(true)
.setChoiceValues(['Monday', 'Tuesday','Wednesday','Thursday','Friday']);
}
}
【问题讨论】:
-
不是一个直接的答案,因为我只为每个电子表格创建一个表单,但我的代码中可能还有其他有用的想法。 docs.google.com/spreadsheets/d/… 复制一份。我仍在努力,会接受建议或更正。
标签: google-apps-script google-sheets google-forms