簡體   English   中英

Google腳本-如果某個單元格被編輯,會自動發送電子郵件嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM