如果单元格的值低于特定值,请发送电子邮件

时间:2018-10-14 14:08:22

标签: google-apps-script google-sheets

对此我绝对是陌生的,因此我不遗余力地尝试编写工作脚本。 我需要每天检查员工的认证,如果过期,请重新认证。 这是一个包含随机数据的“测试”电子表格:https://docs.google.com/spreadsheets/d/1vJ8ms5ZLqmnv4N1upNHD4SRfgIgIbEAAndvUNy-s9S4/edit?usp=sharing

它列出了在我部门工作的人员以及他们的徽章编号和其证书有效的天数。原始工作表采用了另一个电子表格中的天数值,但不应对此产生影响(我认为?)。

我要实现的目标是编写一个脚本,检查 C3:G24 中的所有数字。 如果此范围内的任何单元格的值都小于15,则应从同一行中提取其徽章编号和名称,以及其证书适用的“天”,并发送包含所有这些数据的电子邮件。

例如

主题:证书即将过期

电子邮件内容:具有Badge#(A列编号为#)的员工的(B列名称)证书将在X天内过期(其中X = C3:G24范围内的数字)。

到目前为止,我最好的尝试是至少使它在编辑时发送任何电子邮件,但不幸地尝试改编任何在线发现的脚本失败。 这是至少可以发送电子邮件的方法,但是后来我做了一些破解工作:

function checkValue()
{
  var ss = SpreadsheetApp.getActive();//not sure if needed, the spreadsheet eventually doesn't have to be open/active
  var sheet = ss.getSheetByName("Certifications");

  //not sure if this is ok
  var valueToCheck = sheet.getRange("C3:G24").getValue();

  //Here I'd like to change the "days" based on needs
  if(valueToCheck < 15)
  {
    MailApp.sendEmail("email@company.com","Certifications","Your employee certification will expire soon" + valueToCheck+ ".");
  }
}

有人可以帮助指导我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

这是我要做的:

function checkValue()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Certifications");
  var valueToCheck = sheet.getDataRange().getValues();
  var resultValues = [];
  valueToCheck = valueToCheck.filter(function(element){
    var val = 0
    if (parseInt(element[2]) < 15)
    {
      resultValues.push({col: "Cert1", value: element[2]})
      return (true);
    }
    else if (parseInt(element[3]) < 15)
    {
      resultValues.push({col: "Cert2", value: element[3]})
      return (true);
    }
    else if (parseInt(element[4]) < 15)
    {
      resultValues.push({col: "Cert3", value: element[4]})
      return (true);
    }
    else if (parseInt(element[5]) < 15)
    {
      resultValues.push({col: "Cert4", value: element[5]})
      return (true);
    }
    else if (parseInt(element[6]) < 15)
    {
      resultValues.push({col: "Cert5", value: element[6]})
      return (true);
    }
  })
  for(var i = 0; i < valueToCheck.length; i++)
  {
    MailApp.sendEmail("mail@company.com","Certifications","your employee's " + valueToCheck[i][1] + "with badge " + valueToCheck[i][0]  + " certification will expire in " + resultValues[i].value + " days (column " + resultValues[i].col + ").");
  }
}
  1. 使用getValues()函数检索数据。
  2. 然后根据值小于15的条件过滤值
  3. 同时获取列名和少于15个数据。
  4. 解析两个数组以将数据发送到您的邮件