比较日期Google表格脚本

时间:2019-11-14 13:51:22

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

我正在尝试建立一个脚本(用于Google表格),在该脚本中,一旦我在第二列上引入了一个日期,如果结果证明是早于明天(或过去),它将返回一个带有特定内容的消息框。信息。这是我到目前为止尝试过的方法,但在比较日期时似乎做错了。

function onEdit(e) {

  var today = new Date(); 
  var minDate = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+(today.getDate()+1);

  if (e.range.columnStart == 2 && e.value.toString()<minDate){
    Browser.msgBox('WARNING MESSAGE...');
  }
}

关于它为什么不起作用的任何想法? 谢谢!

2 个答案:

答案 0 :(得分:1)

您应该使用Date JavaScript对象比较日期。由于使用字符串来完成它只是按字母顺序进行。对于您的示例,可能看起来像这样

function onEdit(e) {
    var minDate = new Date();
    minDate.setDate(minDate.getDate() + 1); // Add one to the day
    minDate.setMonth(minDate.getMonth() + 1); // Add one to the month
    if (e.range.columnStart == 2 && new Date(e.value.toString()) < minDate) {
        Browser.msgBox('WARNING MESSAGE...');
    }
}

这会将您从e.value中获取的字符串日期解析为JavaScript日期对象,以便将其与minDate进行比较。

答案 1 :(得分:0)

不接受日期早于明天

function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()!='Sheet1')return;
    var today=new Date(); 
  var tomorrow=new Date(today.getFullYear(),today.getMonth(),today.getDate()+1).valueOf();
  var setDate=new Date(e.range.getValue()).valueOf();
  if (e.range.columnStart==2 && setDate<tomorrow){
    SpreadsheetApp.getUi().alert("WARNING...I don't except dates sooner than tomorrow.")
  }
}

最近,我在使用e.value时遇到了麻烦,而且我经常发现只使用e.range.getValue()并获得更多的时间消耗实际上会更好。

您可以使用valueOf()或getTime()来获取日期值(以毫秒为单位)

Javascript Date Reference

相关问题