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

如何修改Google AppScript实现表单提交后自动填充Sheet模板?

实现思路与代码示例

核心逻辑调整

原脚本针对Google Docs做文本替换,现在改为操作Google Sheets,核心步骤为:

  1. 复制指定的Sheet模板文件
  2. 定位目标工作表
  3. 识别模板中的占位符(如{{姓名}})并替换为表单提交的对应数据
  4. 完成填充后保存新Sheet

具体代码实现

假设表单关联的响应表为Form Responses 1,Sheet模板ID替换为你的实际模板ID,占位符采用{{字段名}}格式:

function onFormSubmit(e) {
  // 获取表单提交的响应数据
  const response = e.namedValues;
  // 替换为你的Sheet模板ID
  const templateSheetId = "你的Sheet模板ID";
  // 新Sheet命名规则,可按需修改
  const newSheetName = `表单数据_${response["姓名"][0]}_${new Date().toLocaleString()}`;
  
  // 复制模板文件到当前驱动器
  const newFile = DriveApp.getFileById(templateSheetId).makeCopy(newSheetName);
  const newSheet = SpreadsheetApp.openById(newFile.getId()).getActiveSheet();
  
  // 遍历所有单元格替换占位符
  const range = newSheet.getDataRange();
  const values = range.getValues();
  
  for (let row = 0; row < values.length; row++) {
    for (let col = 0; col < values[row].length; col++) {
      let cellValue = values[row][col];
      if (typeof cellValue === 'string' && cellValue.startsWith('{{') && cellValue.endsWith('}}')) {
        const fieldName = cellValue.slice(2, -2).trim();
        const replacement = response[fieldName] ? response[fieldName][0] : "";
        values[row][col] = replacement;
      }
    }
  }
  
  // 将替换后的数据写回Sheet
  range.setValues(values);
  
  // 可选:给提交用户添加编辑权限
  // DriveApp.getFileById(newFile.getId()).addEditor(response["邮箱"][0]);
}

关键注意事项

  • 模板中的占位符需和表单字段名完全匹配(含大小写),比如表单字段是联系电话,模板里就要用{{联系电话}}
  • 首次运行脚本时需授权,允许访问Google Drive和Google Sheets权限
  • 若模板包含多个工作表,需用getSheetByName("目标工作表名")替代getActiveSheet()指定具体工作表

内容的提问来源于stack exchange,提问作者Wilberta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:30:47