将 Google 脚本中的日期与表格输入法进行比较

Comparing Dates in Google Scripts with Sheets Input

提问人:Stephen Schonewolf 提问时间:7/7/2022 最后编辑:Stephen Schonewolf 更新时间:7/7/2022 访问量:38

问:

我正在尝试创建一个弹出窗口来警告用户,如果零件日期超过 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 上看到了很多回复,但我无法理解它们。它们似乎指的是我在代码中没有看到的变量,或者我以前从未见过的命令,我不确定它们是否是最新的。

日期 google-apps-script 比较

评论

0赞 gloo 7/7/2022
你能记录下过去的情况吗?partdate
0赞 Stephen Schonewolf 7/7/2022
@gloo。它显示为单元格 Q5 中的值,给定为 2021 年 9 月 2 日

答:

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.') 
    }