提问人:Stephen Schonewolf 提问时间:7/7/2022 最后编辑:Stephen Schonewolf 更新时间:7/7/2022 访问量:38
将 Google 脚本中的日期与表格输入法进行比较
Comparing Dates in Google Scripts with Sheets Input
问:
我正在尝试创建一个弹出窗口来警告用户,如果零件日期超过 90 天,他们必须更新库存中的零件。工作表上的日期(单元格 Q5)是从另一张工作表自动填充的,但这并不重要。电子表格中单元格的值为 2021 年 9 月 2 日。我已经尝试了很多东西,但目前我得到的 Q5 的值显示为 NaN 。
function CheckInvDate() {
var ss = SpreadsheetApp.getActive().getId();
var partsrange = Sheets.Spreadsheets.Values.get(ss, "BOM!A5:Q5");
var currentDate = new Date();
var parthist = new Date();
parthist.setDate(currentDate.getDate() -90);
for (var i = 0; i < partsrange.values.length; i++){
var name = partsrange.values [i][1]
var partdate = partsrange.values [i][16]
var parthisttime = new Date(parthist).getTime();
var partdatetime = new Date(partdate).getTime();
Logger.log("History " + parthisttime)
Logger.log("Current " + partdatetime)
SpreadsheetApp.flush()
// if (parthist > partdate == "TRUE") {
// SpreadsheetApp.getUi().alert('The price on '+ name + ' is out of date. Please update price and try again.')
// }
}
}
我的最后一个日志是
[22-07-06 11:50:55:851 EDT]历史1649346655850
[22-07-06 11:50:55:853 美国东部时间]电流 NaN
我在 Stack Overflow 上看到了很多回复,但我无法理解它们。它们似乎指的是我在代码中没有看到的变量,或者我以前从未见过的命令,我不确定它们是否是最新的。
答:
0赞
Cooper
7/7/2022
#1
试试这个:
function CheckInvDate() {
const ss = SpreadsheetApp.getActive();
const vs = Sheets.Spreadsheets.Values.get(ss.getId(), "BOM!A5:Q5").values;
let d = new Date();
d.setDate(d.getDate() - 90)
const dv = d.valueOf();
const oldthan5 = vs.map(r => {
if (new Date(r[16]).valueOf() < dv) {
return r;
}
}).filter(e => e);
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(`<textarea rows="12" cols="100">${JSON.stringify(oldthan5)}</textarea>`).setWidth(1000), "Older Than 90 Days");
}
这将输出一个对话框,其中包含超过 90 天的行
0赞
Stephen Schonewolf
7/7/2022
#2
午饭后,我又在我的脚本上尝试了这个,无论出于何种原因,我都不再获得 NaN 值。我对 if 语句进行了一次更改以修复逻辑,现在它工作正常。不知道我做了什么,但显然编码之神以前对我不满意。
我唯一改变的部分是
if (parthisttime > partdatetime) {
SpreadsheetApp.getUi().alert('The price on '+ name + ' is out of date. Please update price and try again.')
}
上一个:比较日期以查看日期是否已过期
下一个:日期范围比较
评论
partdate