Google Sheets 一键批量打印所有学生ID对应信息实现方法咨询
Google Sheets学生信息模板批量打印解决方案
实现逻辑
通过绑定Google Apps Script自动遍历所有学生ID,依次刷新学生信息视图,自动配置分页规则,实现每位学生内容单独一页的批量打印。
操作步骤
- 打开你的学生信息表格,点击顶部菜单栏「扩展程序」>「Apps 脚本」进入脚本编辑器
- 清空编辑器内默认的
myFunction示例代码,粘贴下方自定义脚本:
function 批量打印学生信息() { const ss = SpreadsheetApp.getActiveSpreadsheet(); // 请修改下方参数为你自己的表格配置 const 学生列表工作表名 = "学生列表"; // 存储所有学生ID的工作表名称 const ID列序号 = 1; // 学生ID所在的列,A列是1,B列是2以此类推 const 信息展示工作表 = ss.getSheetByName("信息页"); // 展示单个学生信息的工作表名称 const ID输入单元格 = "B2"; // 你设置数据验证选ID的单元格位置 const 打印区域范围 = "A1:F20"; // 单个学生信息要打印的内容区域 const 起始行 = 2; // 学生ID从第几行开始(跳过表头行) // 获取所有学生ID const 学生列表页 = ss.getSheetByName(学生列表工作表名); const 学生总数 = 学生列表页.getLastRow() - 起始行 + 1; const ID列表 = 学生列表页.getRange(起始行, ID列序号, 学生总数, 1).getValues().flat(); // 清空信息页原有内容,准备生成批量打印页 信息展示工作表.clearContents(); let 当前行偏移 = 0; const 打印区域行数 = Number(打印区域范围.split(":")[1].replace(/[^0-9]/ig,'')) - Number(打印区域范围.split(":")[0].replace(/[^0-9]/ig,'')) + 1; // 遍历所有学生生成打印内容 ID列表.forEach((id, index) => { // 写入ID刷新当前学生信息 ss.getRange(ID输入单元格).setValue(id); SpreadsheetApp.flush(); // 复制当前学生信息到批量打印区域 const 单页内容 = ss.getRange(打印区域范围).getValues(); const 单页格式 = ss.getRange(打印区域范围).getTextStyles(); const 目标区域 = 信息展示工作表.getRange(当前行偏移 + 1, 1, 打印区域行数, 单页内容[0].length); 目标区域.setValues(单页内容); 目标区域.setTextStyles(单页格式); // 添加分页符 信息展示工作表.setRowBreak(当前行偏移 + 打印区域行数); 当前行偏移 += 打印区域行数; }); SpreadsheetApp.getUi().alert('批量打印页已生成,直接按Ctrl+P打印即可,每位学生内容已自动分页'); }
- 修改代码里注释标注的参数,对应你自己表格的实际配置,点击保存按钮,给项目命名后点击「运行」,首次运行需要按照提示授权脚本访问你的表格权限
- 运行完成后回到信息展示工作表,所有学生的信息已经按顺序排列,且每人生成了自动分页符,直接调用打印功能即可完成批量打印,每位学生的内容会单独占一页
注意事项
- 如果你的信息页有合并单元格、自定义样式等配置,可以在复制内容的代码段补充
copyTo方法的格式复制参数,保留原有样式 - 如果学生数量超过50人,可以在
setValue(id)后面加一行Utilities.sleep(1000),避免公式刷新不及时导致内容错误 - 后续需要打印时只需要重新运行脚本即可,不用重复配置代码
内容的提问来源于stack exchange,提问作者cjwrk
相关产品推荐
相关产品推荐

