无法使用:根据日期发送电子邮件提醒的代码

时间:2019-08-01 06:24:10

标签: javascript google-apps-script google-sheets

Wazzup伙计们,多亏有了这个网站,我才能够获得一个允许发送电子邮件提醒的代码。现在,我只想根据日期发送提醒,尤其是当“提醒日期”与今天的日期匹配时。我发现了这个awesome post,但仍然无法使其正常工作。

我曾尝试过多次尝试搜索类似案件,但无济于事。该代码实际上在没有“基于日期”条件的情况下可以工作,但是我似乎无法解决。我尝试更改格式,在脚本中使用了“实用程序”,但是仍然没有。

下面是工作表的外观以及代码。因此,就当前数据而言,我应该收到“去健身房”任务的电子邮件提醒,但没有收到任何(尽管我在A列中输入了正确的电子邮件)

哪里出错了?希望您对此有见识和指导。谢谢!

enter image description here

 var EMAIL_SENT = "Yes";

function sendEmails() {
  var now = new Date().toLocaleDateString();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  var startRow = 2;  
  var sheet = ss.getSheetByName ('Tasks')
  var numRows = sheet.getLastRow();
  var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0]; 
    var message = row[2];       
    var ReminderDate = row[3];
    var emailSent = row[4];
    var subject = "Task reminder: "+row[1];
    if (ReminderDate != now)
      continue;

    if (emailSent != EMAIL_SENT) {  
      message = "Good day! This is to remind you of a spefic task: "+ message +". \n\nThis reminder was triggered by the task monitoroing sheet: "+ ss.getUrl()      
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 5).setValue(now);
      SpreadsheetApp.flush();
      }
     }
    }

1 个答案:

答案 0 :(得分:2)

问题:

在电子表格中,当使用日期时,由getValue()getValues()检索的值是日期对象。在脚本中,当row[3]中的var row = data[i]是日期对象时,if (ReminderDate != now)始终是false

修改后的脚本:

为避免上述问题,请进行如下修改,因为now中的if (ReminderDate != now)var now = new Date().toLocaleDateString();

从:
var ReminderDate = row[3];
至:
var ReminderDate = row[3].toLocaleDateString();

参考: