Google apps script Google Sheets中库存清单上的电子邮件通知

Google apps script Google Sheets中库存清单上的电子邮件通知,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在谷歌表单中为我的公司创建一个库存清单。我想要一个脚本来通知我什么时候某个项目缺货。我已经写了一个脚本,但是,我遇到了一个问题,因为我正在使用一个循环来循环列表。如果更多的项目低于给定的最小值,我最终会收到垃圾邮件,因为脚本将再次计算相同的项目。是否有办法为特定单元格的电子邮件设置限制?例如,如果已为特定单元格发送了电子邮件,则在再次更改之前不要再发送,或者类似的情况 非常感谢您的回答。下面是我当前的代码 // Function trigger is on "change". If chan

我正在谷歌表单中为我的公司创建一个库存清单。我想要一个脚本来通知我什么时候某个项目缺货。我已经写了一个脚本,但是,我遇到了一个问题,因为我正在使用一个循环来循环列表。如果更多的项目低于给定的最小值,我最终会收到垃圾邮件,因为脚本将再次计算相同的项目。是否有办法为特定单元格的电子邮件设置限制?例如,如果已为特定单元格发送了电子邮件,则在再次更改之前不要再发送,或者类似的情况

非常感谢您的回答。下面是我当前的代码

// Function trigger is on "change". If changes happen in the selected cells and it's time for re-stock this function will send an e-mail notification.

function checkValue()
{
// Get spreadsheet by ID
 var ss = SpreadsheetApp.openById('ID');
// Get sheet by name
 var sheet = ss.getSheetByName("Inventory_list_fieldwork");

// Loop from row 4 to 14 - increment by 1  
  for (var i=4; i<15;i++){
// Check cells in column C (3)
    var cellCheck = sheet.getRange(i,3).getValue();
// Check item name from column A (1)
    var item_name = sheet.getRange(i,1).getValue();
// If cellCheck is below 9 and cell for item is not blank, send e-mail notification
    if(cellCheck < 9 && item_name != ""){
      MailApp.sendEmail("email@email.com", "There's a low stock on " + item_name, "There are only " + cellCheck + " "+ item_name + " in stock.");
  }
 }
}
//函数触发器处于“更改”状态。如果所选单元格发生更改,并且是重新储存的时间,此功能将发送电子邮件通知。
函数checkValue()
{
//按ID获取电子表格
var ss=SpreadsheetApp.openById('ID');
//按名称获取工作表
var sheet=ss.getSheetByName(“库存清单和实地调查”);
//从第4行循环到第14行-增量为1

对于(var i=4;i我决定创建一个额外的列,如果已经通过电子邮件通知,它将在其中设置一个X,并在重新进货后删除该X。这解决了我的问题

// Function trigger is on "change". If changes happen in the selected cells and it's time for re-stock this function will send an e-mail notification.

function checkValue()
{
 var ss = SpreadsheetApp.openById('ID');  // Get spreadsheet by ID
 var sheet = ss.getSheetByName("Inventory_list_fieldwork");  // Get sheet by name

  for (var i=4; i<15;i++){  // Loop from row 4 to 14 - increment by 1
    var cellCheck = sheet.getRange(i,3).getValue();  // Check cells in column C (3)
    var item_name = sheet.getRange(i,1).getValue();  // Check item name from column A (1)
    var already_notified = sheet.getRange(i,4).getValue();

    if(cellCheck < 9 && item_name != "" && already_notified != "X"){  // If cellCheck is below 9 and cell for item is not blank, send e-mail notification
      already_notified = sheet.getRange(i,4).setValue("X");
      MailApp.sendEmail("email@email.com", "There's a low stock on " + item_name, "There are only " + cellCheck + " "+ item_name + " in stock.");
      }
      else if(cellCheck > 9 && already_notified === "X"){
        already_notified = sheet.getRange(i,4).setValue("");
   }  
 }
}
//函数触发器处于“更改”状态。如果所选单元格中发生更改,则该函数将发送电子邮件通知。
函数checkValue()
{
var ss=SpreadsheetApp.openById('ID');//按ID获取电子表格
var sheet=ss.getSheetByName(“库存清单现场工作”);//按名称获取工作表
对于(变量i=4;变量i=9&&U已通知==“X”){
已通知=sheet.getRange(i,4).setValue(“”);
}  
}
}

您可以通过使用跟踪哪些单元格和哪些值已通过电子邮件发送。属性在脚本执行后不会被擦除。它们将保留在那里,直到您更新或删除它们。但您可以通过编程方式完成所有操作。