将数据与当前日期 google 脚本进行比较
Compare data with present date google script
您好,我想将列与日期进行比较(即 "Referral Date" 列)
今天,这就是我所拥有的
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;
}
}
}
我遇到的问题是,无论列中的日期(推荐日期)如何,它都会抛出警报 未来日期错误。让我知道是否需要其他信息。
我的目标:
1) 如果日期列(推荐日期)大于当前日期:抛出警报错误,不应 运行 updateFilter
2) 如果(推荐日期)小于当前日期:运行 updateFilter
函数
问题
searchRange.getValues()
生成一个二维数组。所以 dates[0][0]
指向一个日期,而 dates[0]
指向一个数组。
var dates = searchRange.getValues();
在循环内重复调用,理想情况下应该在循环外调用一次,因为值不会改变;在循环内调用它既昂贵又多余
for (i=0;i<range.getLastRow();i++){
条件可以替换为i<dates.length
如果遵循第2点
if (today.valueOf()>dates.valueOf()){
我相信应该 dates[0]
而不是
修改代码
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);
var dates = searchRange.getValues().map(d=>d[0]);
for (i=0;i<dates.length;i++) {
if (today.valueOf()>dates[i].valueOf()){
updateFilter()
} else {
SpreadsheetApp.getUi().alert('Future Date Error');
break;
}
}
}
到运行 updateFilter only if no future dates
用以下内容替换循环 -
if(dates.some(d => today.valueOf() < d.valueOf())) {
SpreadsheetApp.getUi().alert('Future Date Error');
} else {
for (let i=0; i<dates.length; i++) {
updateFilter();
}
}
您好,我想将列与日期进行比较(即 "Referral Date" 列)
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;
}
}
}
我遇到的问题是,无论列中的日期(推荐日期)如何,它都会抛出警报 未来日期错误。让我知道是否需要其他信息。
我的目标:
1) 如果日期列(推荐日期)大于当前日期:抛出警报错误,不应 运行 updateFilter
2) 如果(推荐日期)小于当前日期:运行 updateFilter
函数
问题
searchRange.getValues()
生成一个二维数组。所以dates[0][0]
指向一个日期,而dates[0]
指向一个数组。var dates = searchRange.getValues();
在循环内重复调用,理想情况下应该在循环外调用一次,因为值不会改变;在循环内调用它既昂贵又多余for (i=0;i<range.getLastRow();i++){
条件可以替换为i<dates.length
如果遵循第2点if (today.valueOf()>dates.valueOf()){
我相信应该dates[0]
而不是
修改代码
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);
var dates = searchRange.getValues().map(d=>d[0]);
for (i=0;i<dates.length;i++) {
if (today.valueOf()>dates[i].valueOf()){
updateFilter()
} else {
SpreadsheetApp.getUi().alert('Future Date Error');
break;
}
}
}
到运行 updateFilter only if no future dates
用以下内容替换循环 -
if(dates.some(d => today.valueOf() < d.valueOf())) {
SpreadsheetApp.getUi().alert('Future Date Error');
} else {
for (let i=0; i<dates.length; i++) {
updateFilter();
}
}