Date 将数据与当前日期的google脚本进行比较
嗨,我想比较列和日期(即“转诊日期”列) 现在,这就是我所拥有的Date 将数据与当前日期的google脚本进行比较,date,if-statement,google-apps-script,google-sheets,google-sheets-macros,Date,If Statement,Google Apps Script,Google Sheets,Google Sheets Macros,嗨,我想比较列和日期(即“转诊日期”列) 现在,这就是我所拥有的 function newF(){ var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Worksheet'); var range = ss.getDataRange(); var headers = range.getValues()[0]; var colIndex = headers.indexOf("Referral Date"); va
function newF(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Worksheet');
var range = ss.getDataRange();
var headers = range.getValues()[0];
var colIndex = headers.indexOf("Referral Date");
var today = new Date();
var searchRange = ss.getRange(2,colIndex+1,ss.getLastRow()-1);
for (i=0;i<range.getLastRow();i++){
var dates = searchRange.getValues();
if (today.valueOf()>dates.valueOf()){
updatelFilter()
} else{
SpreadsheetApp.getUi().alert('Future Date Error');
break;
}
}
}
函数newF(){
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“工作表”);
var range=ss.getDataRange();
var headers=range.getValues()[0];
var colIndex=headers.indexOf(“转介日期”);
var today=新日期();
var searchRange=ss.getRange(2,colIndex+1,ss.getLastRow()-1);
对于(i=0;idates.valueOf()){
UpdateFilter()
}否则{
SpreadsheetApp.getUi().alert('未来日期错误');
打破
}
}
}
我遇到的问题是,无论列中的日期(转诊日期)如何,它都会引发警报未来日期错误。如果需要更多信息,请告诉我
我的目标:
1) 如果日期列(参考日期)大于当前日期:抛出警报错误&不应运行updateFilter
2) 如果(转诊日期)小于当前日期:运行updateFilter
functionIssues
searchRange.getValues()
生成一个二维数组。所以dates[0][0]
指向一个日期,而dates[0]
指向一个数组var dates=searchRange.getValues()
在循环内部被反复调用,理想情况下,它应该在外部调用一次,因为值不会改变;在循环内调用它既昂贵又多余if(dates.some(d => today.valueOf() < d.valueOf())) {
SpreadsheetApp.getUi().alert('Future Date Error');
} else {
for (let i=0; i<dates.length; i++) {
updateFilter();
}
}
if(dates.some(d=>today.valueOf() 对于(让我=0;它有很多!!为了解释和编码,它完成了这项工作…但是它先运行updateFilter
,然后给出了一个反转的方法,我尝试了反转逻辑,但没有改变。你的意思是在运行updateFilter
之前检查是否有任何日期在未来吗?是的,完全正确,并且只有在以下情况下才运行updateFilter
re不是将来的日期顺便说一句,您可以使用工作表公式进行此操作。选择列并右键单击>数据验证>标准>自定义公式和类型(如果受影响的第一行是A2
),=A2I无法使用数据验证,因为我可能会添加/删除列,因此范围将不同,修改后的脚本会先抛出错误,然后运行updateFilter
,可能是我做错了什么不确定…我从替换为(i=0;i
if(dates.some(d => today.valueOf() < d.valueOf())) {
SpreadsheetApp.getUi().alert('Future Date Error');
} else {
for (let i=0; i<dates.length; i++) {
updateFilter();
}
}