如何修改Google Apps Script实现多选行批量生成邮件草稿?
批量生成邮件草稿的Google Apps Script修改方案
原脚本仅支持为选中的单行生成邮件草稿,以下是修改后支持多行选中批量处理的完整代码:
function draftEmailnew() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const ui = SpreadsheetApp.getUi(); const selectedRange = sheet.getActiveRange(); const selectedRows = selectedRange.getValues(); const startRow = selectedRange.getRow(); // 检查选中区域是否为空 if (selectedRows.flat().every(cell => cell === "")) { ui.alert("请选择包含用户信息的行"); return; } // 遍历每一行数据生成草稿 selectedRows.forEach((row, index) => { // 跳过缺少关键信息的行 if (row[0] === "" || row[1] === "") { ui.alert(`第${startRow + index}行缺少姓名或邮箱信息,已跳过`); return; } const name = row[0]; const email = row[1]; const username = row[5]; const subject = "xxx Database User Access"; const emailBodyHtml = ` <p> Hi ${name},</p> <p> You have been granted access to xxxxxxx</p> <p> Your username is: <b>${username}</b></p> <p> Please find attached .....</p> <p> Kind regards</p> <p></p> <p>name of company</p> `; GmailApp.createDraft(email, subject, "", { htmlBody: emailBodyHtml }); }); ui.alert(`已成功生成${selectedRows.length}封邮件草稿`); }
关键修改说明
- 获取选中区域而非单行:用
sheet.getActiveRange()替代原有的getActiveCell(),获取用户选中的所有行数据,转为二维数组方便遍历 - 批量遍历处理:使用
forEach循环遍历选中的每一行,为每行单独生成对应邮件草稿 - 空值校验优化:
- 先校验整个选中区域是否全为空,避免无效操作
- 逐行校验姓名和邮箱字段,跳过无效数据并弹窗提示
- 结果反馈:处理完成后弹窗告知生成的草稿数量,操作更直观
内容的提问来源于stack exchange,提问作者Chris Turtle
相关产品推荐
相关产品推荐

