我正在尝试建立一个脚本(用于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...');
}
}
关于它为什么不起作用的任何想法? 谢谢!
答案 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()来获取日期值(以毫秒为单位)