如何用Google Apps Script从零创建临时表单?
从零创建临时空白表单并添加颜色选择功能
原脚本通过openById调用已有表单,要从零创建临时空白表单,只需替换表单初始化方式,同时优化颜色选项添加逻辑、支持从电子表格读取颜色列表,具体实现如下:
修改后的完整代码
function initForm() { var sheetID = "1C-TqfI989-D-VWFe6Xdvc0LQoqAX2T2C9zUFbkPQSXw"; // 1. 创建临时空白表单,自定义表单标题 var form = FormApp.create("临时颜色选择表单"); var sheet = SpreadsheetApp.openById(sheetID); // 2. 从电子表格读取颜色列表(假设颜色存放在Sheet1的A列,A1为表头,A2及以下为颜色值) var colorRange = sheet.getRange("Sheet1!A2:A").getValues(); var colors = colorRange.filter(row => row[0] !== "").map(row => row[0]); // 若表格无数据, fallback 到硬编码颜色 if (colors.length === 0) { colors = ["red", "blue", "green", "black", "orange", "purple"]; } // 3. 添加颜色选择多选题 var colorItem = form.addMultipleChoiceItem(); colorItem.setTitle("请选择颜色"); // 4. 批量添加颜色选项(修复原脚本覆盖选项的问题) var choices = []; colors.forEach(color => { choices.push(colorItem.createChoice(color)); }); colorItem.setChoices(choices).showOtherOption(true); // 可选:打印新表单链接,方便快速查看 Logger.log("新表单编辑链接:" + form.getEditUrl()); }
关键修改说明
- 创建空白表单:用
FormApp.create("表单标题")替代FormApp.openById(formID),该方法会直接在Google Drive中生成新的空白表单,返回对应的Form对象。 - 从电子表格取颜色:通过
getRange获取指定列数据,过滤空行后生成颜色数组,摆脱硬编码限制;表格无数据时保留硬编码作为备选。 - 修复选项覆盖问题:原脚本每次调用
setChoices([item.createChoice(color)])会覆盖之前所有选项,最终仅保留最后一个颜色。现在先收集所有Choice对象,再一次性设置,确保所有颜色正常显示。
内容的提问来源于stack exchange,提问作者Nicholas Saunders
相关产品推荐
相关产品推荐

