You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:45:49