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

Google Sheets脚本改造:批量发送库存预警邮件需求

改造Google Sheets脚本实现批量库存阈值提醒邮件

我帮你改造了原来的sendEmails2脚本,实现了批量汇总库存低于阈值商品并发送单封HTML邮件的功能,直接适配你的需求👇

完整改造后的脚本

var EMAIL_SENT = "EMAIL_SENT";
function sendLowStockAlert() {
  // 获取目标工作表(对应你的「Pedidos」表)
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Pedidos");
  // 获取表格所有数据(默认第一行是表头)
  var data = sheet.getDataRange().getValues();
  
  // --------------------------
  // 请根据你的表格实际列位置修改以下索引!
  // 数组索引从0开始,比如A列是0,B列是1,以此类推
  var COL_ITEM_NAME = 0;   // 商品名列的索引
  var COL_STOCK = 1;       // 当前库存数列的索引
  var COL_THRESHOLD = 2;   // 最低库存阈值列的索引
  var COL_STATUS = 3;      // 可选:用来标记邮件发送状态的列(如果需要)
  // --------------------------

  // 筛选出库存≤阈值的商品(自动跳过表头行)
  var lowStockItems = data.slice(1).filter(function(row) {
    var currentStock = parseInt(row[COL_STOCK]);
    var threshold = parseInt(row[COL_THRESHOLD]);
    // 如果需要排除已发送过提醒的商品,取消下面的注释:
    // && row[COL_STATUS] !== EMAIL_SENT
    return !isNaN(currentStock) && !isNaN(threshold) && currentStock <= threshold;
  });

  // 如果没有符合条件的商品,直接结束脚本
  if (lowStockItems.length === 0) {
    console.log("今日没有低于阈值的库存商品,无需发送邮件");
    return;
  }

  // 构建美观的HTML邮件内容
  var htmlBody = "<h3>📦 每日库存阈值提醒</h3>";
  htmlBody += "<p>以下商品库存已低于或等于设定阈值,请及时安排补货:</p>";
  htmlBody += "<table border='1' cellpadding='8' cellspacing='0' style='border-collapse: collapse;'>";
  // 添加表头行
  htmlBody += `<tr>
                <th style='background-color: #f0f0f0;'>${data[0][COL_ITEM_NAME]}</th>
                <th style='background-color: #f0f0f0;'>${data[0][COL_STOCK]}</th>
                <th style='background-color: #f0f0f0;'>${data[0][COL_THRESHOLD]}</th>
              </tr>`;
  // 添加每个低库存商品的行
  lowStockItems.forEach(function(item) {
    htmlBody += `<tr>
                  <td>${item[COL_ITEM_NAME]}</td>
                  <td>${item[COL_STOCK]}</td>
                  <td>${item[COL_THRESHOLD]}</td>
                </tr>`;
  });
  htmlBody += "</table>";
  htmlBody += `<p>发送时间:${new Date().toLocaleString()}</p>`;

  // 发送邮件(替换成你的收件邮箱)
  var recipient = "your-alert-email@example.com";
  var subject = `⚠️ 库存提醒:${lowStockItems.length}件商品需补货`;
  MailApp.sendEmail({
    to: recipient,
    subject: subject,
    htmlBody: htmlBody
  });

  // --------------------------
  // 可选:标记已发送提醒的商品(避免重复发送)
  // 如果启用,确保表格里有对应状态列,取消下面注释即可
  // data.slice(1).forEach(function(row, index) {
  //   var currentStock = parseInt(row[COL_STOCK]);
  //   var threshold = parseInt(row[COL_THRESHOLD]);
  //   if (!isNaN(currentStock) && !isNaN(threshold) && currentStock <= threshold && row[COL_STATUS] !== EMAIL_SENT) {
  //     sheet.getRange(index + 2, COL_STATUS + 1).setValue(EMAIL_SENT); // 行号从2开始(跳过表头)
  //   }
  // });
  // --------------------------

  console.log(`邮件已成功发送,共包含${lowStockItems.length}件低库存商品`);
}

关键使用说明

  • 列索引必改:一定要根据你的Pedidos表格实际列位置,修改脚本里的COL_ITEM_NAME、COL_STOCK、COL_THRESHOLD这几个变量的数值,比如商品名在C列(第三列),索引就是2。
  • 自动每日发送:设置定时触发器的方法:
    1. 打开Google Sheets的脚本编辑器(工具→脚本编辑器)
    2. 点击左侧的「触发器」图标(时钟形状)
    3. 点击「添加触发器」,配置:
      • 选择函数:sendLowStockAlert
      • 事件源:时间驱动
      • 类型:日计时器
      • 选择你想要的每日发送时间
  • 邮件格式优化:脚本里的HTML已经加了基础样式,你可以根据需求修改字体、颜色、边框样式等,让邮件更符合你的使用习惯。
  • 重复提醒控制:如果不需要每日重复发送同一商品的提醒,可以启用脚本里的「标记已发送」代码块,在表格中新增一列用来记录发送状态。

内容的提问来源于stack exchange,提问作者Antonio Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:02:52