库存 - 当单元格值 < 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".
我目前正在尝试使用 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".