[我正试图阻止在发送值时发送电子邮件

问题描述 投票:0回答:2

我已经为我们的发动机工作建立了一个结帐系统。该计划的一部分是必须每天进行结帐。我创建了一个脚本,该脚本在当天未填写电子邮件时发送电子邮件。它运行良好,我每天晚上9点和10点触发它。现在,这些钻机有时会停止服务,并且在停工时不需要进行检查。我做到了,所以当他们停止使用钻机时,它就会反映在他们的每日记录中。

我以为我可以正常工作,但是我的第一个钻机停产了,但仍然发送了电子邮件。我认为具有条件条件IF的第三列中的值不是“服务停止”,它将继续,并且如果它确实说“服务停止”,则将停止脚本。我对代码做了什么错?

https://docs.google.com/spreadsheets/d/134DFqUNgUihWacm3hNd4B9Zqe-BYubYRXd-hh15fgK8/edit?usp=sharing


function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var lastRow = CountColA();
  var lastDate = new Date(sheet.getRange(lastRow,1).getValues());
  var thisDate = new Date();
  var DateDiff = (thisDate.getTime() - lastDate.getTime())/1000/60/60/24;
  var emailSent = lastRow[3]; // Third column
    if (emailSent != "Out of service") { // Prevents sending duplicates
    if (DateDiff > 0.35) {
    MailApp.sendEmail("[email protected]" + "," + "[email protected]", "Unit Has Not Signed Narcotics Form", "BR133 has not signed the narcotics log today");
  } 
}
}

function CountColA() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for(var i = data.length-1 ; i >=0 ; i--){
    if (data[i][0] != null && data[i][0] != ''){
      return i+1 ;
    }
  }}
google-apps-script google-sheets google-form
2个回答
0
投票
var lastRow = CountColA();

[var emailSent=lastrow[3];lastRow不是数组。

因此很难说出此行中的电子邮件已发送:if (emailSent != "Out of service")


0
投票
sheet.getLastRow();

并获得像这样的列C值:

sheet.getRange(lastRow, 3).getValue();

而且,我测试了您的代码,并且lastDate变量不正确,因此您应该查看如何从字符串[2]创建日期或在时间戳列中输入日期的数据验证,以便您可以检索日期直接值。

[1] https://developers.google.com/apps-script/reference/spreadsheet/sheet#getlastrow

[2] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

© www.soinside.com 2019 - 2024. All rights reserved.