Google Apps Script如何通过点击链接或弹窗触发每行发送单封邮件?
Google Sheets 行级触发邮件发送实现建议
你现有测试代码可参考如下调整适配业务逻辑:
function sendConfirmationEmail(e) { var sheet = SpreadsheetApp.getActiveSheet(); var range = e.range; var row = range.getRow(); // 仅触发F列勾选操作的行 if(range.getColumn() === 6 && e.value === "TRUE") { var rowData = sheet.getRange(row, 1, 1, 5).getValues()[0]; // 以下新增模板替换、发信逻辑 var templateDoc = DocumentApp.openById('你的模板文档ID'); var templateBody = templateDoc.getBody(); // 按你的实际占位符替换即可 templateBody.replaceText('{{姓名}}', rowData[0]); templateBody.replaceText('{{通知内容}}', rowData[2]); var emailContent = templateBody.getText(); // 发信,rowData[4]对应E列的邮件地址 GmailApp.sendEmail(rowData[4], '通知主题', emailContent); // 发信完成后重置勾选框状态,避免重复触发 range.setValue(false); } }
两个方案的实现技巧
方案A:F列设置触发入口
- 推荐用勾选框作为触发入口:选中F列需要生效的行,点击「数据→数据验证→条件→勾选框」完成设置,之后给脚本新增可安装的onEdit触发器,绑定
sendConfirmationEmail函数,触发条件设置为「修改电子表格时」即可。这种方式可以精准识别当前操作的行,不需要额外传参,适配行级发信的需求。 - 不要用插入绘图按钮的方式实现,这类全局按钮无法直接获取当前点击的行号,适配行级发信的开发成本更高。
方案B:借助E列原生发信按钮填充模板
- 谷歌表格原生的悬停发信按钮没有开放自定义接口,无法直接绑定模板填充逻辑,只能用变通方案实现:新增
onSelectionChange触发器,当选中E列的邮件单元格时,自动执行模板占位符替换逻辑,把生成好的邮件内容写入剪切板,你点击原生发信按钮后直接粘贴即可。 - 也可以在选中E列单元格时自动弹出自定义侧边栏,展示渲染好的邮件内容,你点击侧边栏的确认按钮直接调用Gmail接口发信,不需要调用原生发信按钮。
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

