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

如何修改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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:20:09