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

如何在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根目录`);
}

操作步骤

  1. 打开你的电子表格,点击顶部菜单栏「扩展程序」-「Apps Script」打开脚本编辑器
  2. 删除编辑器内默认的空代码,将上面的脚本粘贴进去
  3. 点击保存按钮,任意命名项目后,首次运行需要按提示完成权限授权(遇到安全提示点击「高级」-「继续访问」即可,脚本仅操作你自己的表格数据,无安全风险)
  4. 选择函数batchPrintStudentTemplates点击运行,等待运行完成后即可在Google Drive根目录拿到合并好的打印文件,直接打印就是按学生顺序分页的效果

注意事项

  • 运行脚本前请先在TEMPLATE工作表提前设置好打印区域、纸张大小、边距等打印参数,脚本导出PDF时会自动沿用你设置的打印配置
  • 如果你的学生标识不在Form Responses 1的第一列,可以修改代码里student[0]的索引值,第一列是0,第二列是1,以此类推

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:24:03