[英]Google Script - Automatically send email IF a certain cell is edited?
基本上,我正在創建墨粉庫存管理表,如果庫存量達到1,我會發送電子郵件。它使用可安裝的onEdit
觸發器來完成此onEdit
(我使用一個簡單的onEdit
函數將墨粉添加到日志表中)。 我的電子郵件發送正常,但是問題是,如果庫存下降到一只,每次我編輯另一種庫存時,它都會向我發送一封電子郵件。 只有更改包含相關庫存編號的單元格時,有沒有辦法使電子郵件功能運行?
這是我的代碼
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Toners" && r.getColumn() == 5 && r.getValue() > "") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Log");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
//I included the above code just in case someone finds an easier way to put it in there and then call the EmailPrinterGroup1 functon..
function EmailPrinterGroup1() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var PrinterGroupStock = ss.getSheetByName("Notification").getRange("B1").getValue();
var EmailList = ["abc@123.org"];
if(PrinterGroupStock <= 1){
var email = Session.getActiveUser().getEmail();
GmailApp.sendEmail(EmailList, 'Toner Stock Alert - Communal Areas',
'There is only 1 toner left in stock for the communal areas, please re-stock ASAP. Click the link below to go to the Toner Stock Management sheet. \n\n'+ss.getUrl(),
{from:"xyz@321.org"});
PropertiesService.getScriptProperties().setProperty("last", PrinterGroupStock);
}
}
在這種情況下,我要檢查的單元格為B1
,它使用一個COUNTIF
公式(如果計算結果為1,則電子郵件將發送),並且位於“通知”工作表(已編輯主工作表的主工作表頁面最被稱為“碳粉”。)謝謝!
您可以在工作表中使用一個單元格來存儲一個標志,該標志可以記住B1
值之前是否為1。 在以下示例中,我正在使用A1
。
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Toners" && r.getColumn() == 5 && r.getValue() > "") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Log");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
var stock_range = ss.getSheetByName("Notification").getRange(1, 2);
var stock_is_one_flag = ss.getSheetByName("Notification").getRange(1, 1).getValue();
if (stock_range.getValue() === 1 && stock_is_one_flag === 0){
EmailPrinterGroup1();
ss.getSheetByName("Notification").getRange(1, 1).setValue(1);
} else if (stock_range.getValue() != 1 && stock_is_one_flag != 0){
EmailPrinterGroup1();
ss.getSheetByName("Notification").getRange(1, 1).setValue(0);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.