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。 - 自动每日发送:设置定时触发器的方法:
- 打开Google Sheets的脚本编辑器(工具→脚本编辑器)
- 点击左侧的「触发器」图标(时钟形状)
- 点击「添加触发器」,配置:
- 选择函数:
sendLowStockAlert - 事件源:时间驱动
- 类型:日计时器
- 选择你想要的每日发送时间
- 选择函数:
- 邮件格式优化:脚本里的HTML已经加了基础样式,你可以根据需求修改字体、颜色、边框样式等,让邮件更符合你的使用习惯。
- 重复提醒控制:如果不需要每日重复发送同一商品的提醒,可以启用脚本里的「标记已发送」代码块,在表格中新增一列用来记录发送状态。
内容的提问来源于stack exchange,提问作者Antonio Santos
相关产品推荐
相关产品推荐

