App Script/Google Sheet:如何将表单数据导入打印模板表格
实现Google Sheet表单保存+证书模板导入方案
需求对应效果预览


一、功能实现思路
通过Google Apps Script编写自定义脚本,搭配Sheet内的自定义按钮,完成两个核心动作:
- 一键保存表单数据到当前表格下方
- 自动复制预设打印模板,根据表单内员工数量(1/2人)填充对应内容
二、分步实现教程
1. 前期准备
- 确认表单所在工作表(比如
Sheet1),以及表单数据的具体区域(示例用A1:D2,可按需调整) - 创建「证书模板」工作表,在模板中预留信息占位符,比如
{{员工1姓名}}、{{员工1部门}}、{{员工2姓名}},对应证书里的员工信息位置
2. 编写Apps Script代码
打开Sheet,点击「扩展程序」→「Apps脚本」,清空默认代码后粘贴以下内容:
function saveAndGenerateCertificate() { const activeSS = SpreadsheetApp.getActiveSpreadsheet(); const formSheet = activeSS.getSheetByName("Sheet1"); // 表单所在工作表 const templateSheet = activeSS.getSheetByName("证书模板"); // 预设模板工作表 // 1. 获取表单数据(此处范围可根据实际表单位置修改) const formValues = formSheet.getRange("A1:D2").getValues(); const hasTwoEmployees = formValues[1][0].trim() !== ""; // 判断是否有第2名员工(假设A2为员工2姓名) // 2. 将表单数据追加到当前表格末尾 const lastDataRow = formSheet.getLastRow(); formSheet.getRange(lastDataRow + 1, 1, formValues.length, formValues[0].length).setValues(formValues); // 3. 复制模板并填充员工信息 const newCertSheet = templateSheet.copyTo(activeSS).setName(`证书_${Date.now()}`); // 填充第1名员工信息 newCertSheet.createTextFinder("{{员工1姓名}}").replaceAllWith(formValues[0][0]); newCertSheet.createTextFinder("{{员工1部门}}").replaceAllWith(formValues[0][1]); // 有第2名员工时填充对应信息,否则隐藏员工2的模板区域 if (hasTwoEmployees) { newCertSheet.createTextFinder("{{员工2姓名}}").replaceAllWith(formValues[1][0]); newCertSheet.createTextFinder("{{员工2部门}}").replaceAllWith(formValues[1][1]); } else { // 替换为你模板中员工2所在的单元格范围,示例为F2:H5 newCertSheet.getRange("F2:H5").setHidden(true); } }
3. 添加自定义触发按钮
- 回到Sheet界面,点击「插入」→「绘图」,绘制一个按钮(比如标注“保存并生成证书”),保存后插入到表单附近
- 右键点击按钮,选择「分配脚本」,输入
saveAndGenerateCertificate(需与上述函数名完全一致)
三、自定义调整点
- 表单范围修改:将代码中的
getRange("A1:D2")替换为你实际的表单数据区域 - 模板占位符替换:根据你的模板内容,把代码里的
{{员工1姓名}}等占位符换成模板内实际使用的标记 - 员工2区域处理:若不需要隐藏而是删除员工2的行/列,可将
setHidden(true)替换为deleteRows()或deleteColumns()方法
内容的提问来源于stack exchange,提问作者lhemyer22
相关产品推荐
相关产品推荐

