【问题标题】:Send an email from sheets when values are below a set value当值低于设定值时从工作表发送电子邮件
【发布时间】:2022-01-11 19:37:46
【问题描述】:

我正在尝试为用于库存跟踪的谷歌电子表格编写脚本。 当现有值低于最低库存值时,我希望触发一封电子邮件,其中包含零件号和我需要生产的数量才能恢复到我们的最低库存数量,即。 “PN需要#制造”。我已经成功地为一个值发送了一封电子邮件,但我无法弄清楚如何让脚本查看一个范围而不重复每一行的脚本。 该图像是我正在处理的屏幕截图。例如,由于 V1276 需要再制造一件来满足最低要求。投资qt.,我想通过电子邮件告诉我“V1276 Needs 1 Made”。我一直在玩的示例代码:

    function CheckParts() {
    var minVal = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Master List").getRange("H2");
    var valule = minVal.getValue();
    if (valule < minVal){
    // Fetch the email address
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("B2");
    var emailAddress = emailRange.getValues();
  
    // Send Alert Email.
    var message = 'You need to make ' + monthSales; // Second column
    var subject = 'Low Parts Alert';
    MailApp.sendEmail(emailAddress, subject, message);
    }
}

【问题讨论】:

  • 您能否包含您的脚本,以便我们了解我们来自哪里?所以我们知道要在你的代码中修改什么。方法因您的需要而异。但是根据您的问题,(很可能)您手动运行该功能。这只是一个猜测,因为我们不清楚您的脚本是什么。
  • 我刚刚编辑了帖子以包含我的测试脚本,希望对您有所帮助。
  • 我在下面提供了答案。检查它是否适用于您@benthelemon。

标签: google-sheets scripting spreadsheet


【解决方案1】:

您似乎想手动运行它。如果需要,请进行以下修改:

脚本:

function CheckParts() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getSheetByName("Master List");
  var lastRow = dataSheet.getLastRow();
  // Get A2:I values
  var values = dataSheet.getRange(2, 1, lastRow - 1, 9).getValues();
  var emailAddress = ss.getSheetByName("Sheet1").getRange("B2").getValue();
  // Filter rows where H > I
  values.filter(e => e[7] > e[8]).forEach(e => {
    var pN = e[0];
    var description = e[1];
    var minInv = e[7];
    var currInv = e[8];
    // Send a more detailed email
    var message = `Currently, we only have ${currInv} items of "${description}".\nTo reach minimum inventory quantity of ${minInv}, you need to make ${minInv-currInv} additional item.`;
    var subject = `Low Parts Alert for ${pN}`;
    MailApp.sendEmail(emailAddress, subject, message);
  });
}

数据样本:

输出:

将I3改为2后测试:

注意:

  • 上面的脚本将检查所有满足条件H &gt; I 的行。如果它属于该范围,那么它将为每一行发送一封电子邮件。
  • 还有一个选项可以在检测到您编辑了 H 或 I 列值并且满足条件(例如 H > I)时自动发送电子邮件。为此,我们需要一个 onEdit 安装触发器。如果您更喜欢这种onEdit 方法,请在下方提及,以便我为您提供。

【讨论】:

  • 感谢您的解决方案,这非常有帮助!您能否提供一些有关onEdit 方法的指导/示例?
  • 嗨@benthelemon,您可以尝试检查this one
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 2016-11-04
  • 2012-04-06
  • 2023-03-20
相关资源
最近更新 更多