库存 - 当单元格值 < 2 时发送电子邮件(Google 电子表格)

Stock Inventory - Send email when cell value < 2 (Google Spreadsheet)

我目前正在尝试使用 google 电子表格为我工作场所经常使用的一些产品创建库存。此外,我正在尝试编写一个脚本,当某个产品的值低于 2 时,该脚本会向我发送电子邮件,以便我知道某个产品需要补货。我不知道编码的基础知识,但这是我到目前为止得到的:

function readCell() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");  
var ProductA = sheet.getRange("B2").getValue();
var Product B = sheet.getRange("B3").getValue();
var min = 2
if (ProductA<min) MailApp.sendEmail('n********@googlegroups.com', 'LOW REAGENT STOCK',     'Attention! Your stock of ProductA is running low. Please proceed to restock.');
if (ProductB<min) MailApp.sendEmail('n********@googlegroups.com', 'LOW REAGENT STOCK',     'Attention! Your stock of ProductB is running low. Please proceed to restock.');
}

我将触发器放在 运行 脚本的 onEdit 上,我打算用更多产品扩展列表。问题是,如果一个产品已经达到低于 2 的值,并且如果更改另一个产品,脚本将为它们发送电子邮件。随着更多产品的出现,这变得很麻烦,因为如果其他值保持在 2 以下,我会收到一堆电子邮件。有人可以帮我解决这个问题吗?到目前为止,我找不到任何解决方案,非常感谢您的帮助。

谢谢!

当 "onEdit" 触发器触发时,它接收事件对象作为参数,其中包含一些关于上下文的有用信息,编辑操作发生在该上下文中。

例如,

    function onEdit(e) {

        // range that was edited
        var range = e.range; 

        //value prior to the edit action
        var oldValue = e.oldValue;

        //new value
        var value = e.value;

        //sheet the action came from
        var sheet = range.getSheet(); 

        //cell coordinates (if edited range is a single cell)
        //or the upper left boundary of the edited range

        var row = range.getRow(); 
        var col = range.getColumn();


      }

您可以检查事件对象以获取已编辑的单元格并查看它是否在 B 列中。

var productsColIndex = 1; //column A index;
var inventoryColIndex = 2; //column B index

var range = e.range;
var value = e.value;
var sheet = range.getSheet();


var editedRow = range.getRow();
var editedCol = range.getColumn();

var productName = sheet.getRange(editedRow, productsColIndex).getValue();



//checking if 
//1) column B was edited 
//2) the product exists in column A
//3) new value is less than 2

if ((editedCol == inventoryColIndex) && productName && value < 2) {

    //code for sending notification email. 

 }

最后,因为像 onEdit() 这样的简单触发器无法调用需要授权的服务,所以最好创建一个具有不同名称的函数,然后手动设置可安装触发器。在您的脚本编辑器中,转到 "Edit" -> "Current project's triggers" -> "Add a new trigger" ,从下拉列表中选择 select 您的函数名称,然后选择以下选项: "From spreadsheet", "On edit".