如何编写脚本实现Google表单复选框数据自动填充Google文档?
解决Google表单复选框多选数据填充Google文档模板的问题
问题分析
Google表单的复选框(多选题)响应数据在e.values数组中是以逗号+空格分隔的字符串形式存储的,直接替换到文档中会显示成一串紧凑的文本,若需要更清晰的展示格式(比如项目符号列表),需对该字段做额外处理。
解决方案
修改脚本中offense变量的处理逻辑,将逗号分隔的字符串转换成更易读的格式,以下是调整后的完整脚本:
function autoFillGoogleDocFromForm(e) { // e.values是表单提交值的数组 var timestamp = e.values[4]; var studentName = e.values[3]; var oe = e.values[16]; var gradelevel = e.values[14]; var program = e.values[15]; // 处理复选框多选数据:分割成数组后转换成项目符号列表 var offenseRaw = e.values[6]; var offense = offenseRaw ? offenseRaw.split(', ').map(item => `- ${item}`).join('\n') : '无'; // 若未选择任何选项,显示默认文本 var action = e.values[18]; var serve = e.values[31]; var makeUp = e.values[32]; var comments = e.values[29]; // 获取模板文件 var file = DriveApp.getFileById('1nPWC0IKc1zUJXYxbGahJsSW4uNWwhxnLM8shcD8kEE4'); // 指定存储文件夹并创建模板副本 var folder = DriveApp.getFolderById('1FlpHRKqYrEHttA-3ozU3oUVJlgiqqa-F') var copy = file.makeCopy(studentName + ', ' + timestamp, folder); // 打开副本文档 var doc = DocumentApp.openById(copy.getId()); var body = doc.getBody(); // 替换文档占位符 body.replaceText('<<Student Name>>', studentName); body.replaceText('<<Incident Date>>', timestamp); body.replaceText('<<Student Grade>>', gradelevel); body.replaceText('<<Open enrolled?>>', oe); body.replaceText('<<IEP/504?>>', program); body.replaceText('<<Reason for Referral (Handbook)>>', offense); body.replaceText('<<Administrative Action>>', action); body.replaceText('<<Date(s) to be Served>>', serve); body.replaceText('<<Make up Date(s)>>', makeUp); body.replaceText('<<Comments>>', comments); // 保存并关闭文档 doc.saveAndClose(); }
关键修改说明
- 格式化多选数据:用
split(', ')将逗号分隔的字符串拆分成数组,再通过map为每个选项添加项目符号-,最后用join('\n')拼接成换行分隔的列表文本,让文档中的多选结果更易读。 - 空值兜底:添加判断逻辑,若用户未选择任何复选框选项,自动显示
无作为默认值,避免文档中出现空白占位符。
额外优化提示
如果复选框选项本身包含逗号,建议改用e.namedValues获取数据(不受表单字段顺序变化影响,稳定性更高):
// 使用e.namedValues直接通过问题标题获取复选框选中项数组 var offenseArray = e.namedValues['Reason for Referral (Handbook)'] || []; var offense = offenseArray.length > 0 ? offenseArray.map(item => `- ${item}`).join('\n') : '无';
内容的提问来源于stack exchange,提问作者Jim55
相关产品推荐
相关产品推荐

