基于Google Sheets单元格值切换模板实现邮件合并生成不同PDF
解决方案
1. 定义双模板常量
在脚本开头先定义好默认模板和备用模板的ID:
// 预设两个模板ID const DEFAULT_TEMPLATE_ID = '1olnBowCh-1apK3jWN-Lr2Ty3UT1NK_dmoJOVBjnzgO8'; const ALTERNATIVE_TEMPLATE_ID = '此处替换为你的备用模板ID';
2. 动态判断模板ID
找到脚本中处理选中行的核心逻辑(原脚本的processRows或主执行函数),在创建文档副本前添加判断逻辑:
// 遍历选中的每一行 rows.forEach(function(row, index) { // 跳过表头行(如果表格有表头) if (index === 0) return; // 获取当前行N列的值(N是第14列,数组索引从0开始所以取13) const nColumnContent = row[13]; // 根据N列是否为空选择对应模板 const targetTemplateId = (nColumnContent === '' || nColumnContent === null) ? DEFAULT_TEMPLATE_ID : ALTERNATIVE_TEMPLATE_ID; // 用选中的模板创建副本,替换原脚本中固定的GDOC_TEMPLATE_ID const copyId = DriveApp.getFileById(targetTemplateId).makeCopy().getId(); const copyDoc = DocumentApp.openById(copyId); // ... 原脚本的占位符替换、PDF生成等后续逻辑 });
3. 替换原脚本的固定模板引用
把原脚本中所有使用GDOC_TEMPLATE_ID的地方,全部替换为上面生成的targetTemplateId变量。
额外注意
- 确认N列的索引正确:如果你的表格中N列是第14列(A=1,B=2…N=14),数组索引必须用13(JavaScript数组从0计数)。
- 确保两个模板的占位符名称完全一致,否则邮件合并的替换逻辑会失效;若占位符不同,需要额外添加模板对应的替换规则。
内容的提问来源于stack exchange,提问作者Darkoder
相关产品推荐
相关产品推荐

