date - 如何从单元格中提取日期并将其与今天的日期进行比较
问题描述
我正在使用电子表格来管理认证到期日期。我想在员工的认证将在 90 天内到期时向其发送电子邮件。我只想发一封电子邮件。我正在努力从单元格中获取日期并将其与今天的日期进行比较。
如果 MS 中的今天日期 + 90 天 > MS 中的认证到期日期,我想发送一封电子邮件。
我开始使用模板来防止发送重复的电子邮件。我让它与 if && 和两个单元格中的单词一起工作。我正在努力让日期开始工作。我尝试使用getTime()
在 MS 中获取日期,但getValues().getTime
返回错误。
var EMAIL_SENT = 'EMAIL_SENT';
var NintyDayInMs = 90*24*60*60*100;
var Today = new Date().getTime();
var expired = Today+NintyDayInMs;
/**
* Sends non-duplicate emails with data from the current spreadsheet.
*/
function sendEmails2() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, 4);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var emailSent = row[2]; // Third column
var exp = row[3]; // Fourth column
var expDate = exp.getTime();
if (emailSent != EMAIL_SENT && expDate < expired) { // Prevents
sending duplicates
var subject = 'Sending emails from a Spreadsheet';
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is
interrupted
SpreadsheetApp.flush();
}
}
}
我当前的代码导致
TypeError:在对象中找不到函数 getTime(单元格中的日期)。(第 26 行,文件“代码”)
解决方案
阅读Adding Days to a Date - Google Script以更好地理解脚本中的日期算术。
缺陷在于试图链接到期日期。代替:
var exp = row[3]; // Fourth column
var expDate = exp.getTime();
只使用:
var expDate = new Date(row[3]); // make the sheet value a date object
然后剩下的就自然而然了……
var expDate = new Date(row[3]); // make the sheet value a date object
Logger.log("expiry = "+expDate);
var today = new Date();
Logger.log("today = "+today);
var today90 = new Date(today.getTime()+90*3600000*24);// 90 days from today
Logger.log("today90 = "+today90);
if ((today90 > expDate) && (emailSent!=EMAIL_SENT)){
Logger.log("send the email");
}
else
{
Logger.log("don't send the email");
}
推荐阅读
- java - Java 服务器和客户端类上的石头剪刀布游戏
- android - 如何在 decodeResource 中调整大小的位图
- excel - 如何从 Delphi 将一维值数组分配给 Excel 列
- html - 在 Bootstrap 中使用 SRCSET 时的 SIZES 属性
- c++ - 使用叉子和套接字 C++ 的晚餐哲学家
- php - 如何为重复内容使用自定义帖子类型
- css - react-table tbody 不可垂直滚动
- python - 在python中按组打印列表项
- python - 如何使用 Python Unsplash API 获取随机图像的 URL 而不是随机照片 ID?
- python - 对数据集的 pyspark 操作