如何在Google Sheet中按ID批量打印每名学生对应的数据模板
这个需求完全可以实现,无需手动逐份修改,通过Google Sheets自带的Google Apps Script就能完成批量生成、自动分页的要求,最终输出的打印文件完全满足「第1页对应学生1、第2页对应学生2」的分页规则。
实现逻辑
- 读取
Form Responses 1工作表内的所有有效学生数据,自动跳过表头空行 - 遍历每一条学生数据,依次将学生标识写入
TEMPLATE工作表的C2单元格,触发模板内的关联公式自动填充该学生的全部对应内容 - 每完成一个学生的模板填充后,自动将当前模板页加入待打印队列,最终合并为多页PDF,每页严格对应一位学生,直接发送到Google Cloud Print或者本地打印都符合分页要求
可直接使用的脚本代码
function batchPrintStudentTemplates() { const ss = SpreadsheetApp.getActiveSpreadsheet(); // 读取学生数据工作表 const dataSheet = ss.getSheetByName("Form Responses 1"); // 读取模板工作表 const templateSheet = ss.getSheetByName("TEMPLATE"); // 读取所有学生数据,slice(1)代表从第2行开始读取有效数据,可根据你的表头行调整 const studentData = dataSheet.getDataRange().getValues().slice(1); let printContent = []; studentData.forEach((student, index) => { // 跳过空数据行 if(!student[0]) return; // 将学生标识写入模板C2单元格,student[0]对应学生数据的第一列,可根据实际调整列索引 templateSheet.getRange("C2").setValue(student[0]); SpreadsheetApp.flush(); // 导出当前模板页的PDF内容 const pdfContent = templateSheet.getAs('application/pdf').getBytes(); printContent = printContent.concat(pdfContent); }); // 生成合并后的PDF文件保存到Google Drive const mergedPdf = Utilities.newBlob(printContent, 'application/pdf', '学生批量打印文件.pdf'); DriveApp.createFile(mergedPdf); SpreadsheetApp.getUi().alert(`批量生成完成,共${studentData.filter(s=>s[0]).length}页,文件已保存到你的Google Drive根目录`); }
操作步骤
- 打开你的电子表格,点击顶部菜单栏「扩展程序」-「Apps Script」打开脚本编辑器
- 删除编辑器内默认的空代码,将上面的脚本粘贴进去
- 点击保存按钮,任意命名项目后,首次运行需要按提示完成权限授权(遇到安全提示点击「高级」-「继续访问」即可,脚本仅操作你自己的表格数据,无安全风险)
- 选择函数
batchPrintStudentTemplates点击运行,等待运行完成后即可在Google Drive根目录拿到合并好的打印文件,直接打印就是按学生顺序分页的效果
注意事项
- 运行脚本前请先在
TEMPLATE工作表提前设置好打印区域、纸张大小、边距等打印参数,脚本导出PDF时会自动沿用你设置的打印配置 - 如果你的学生标识不在
Form Responses 1的第一列,可以修改代码里student[0]的索引值,第一列是0,第二列是1,以此类推
内容的提问来源于stack exchange,提问作者cjwrk
相关产品推荐
相关产品推荐

