我有一个数组,我想仅在特定时间段后使用日期过滤(数组的第4列)。 startDate变量是我要用来过滤数组的单元格中的日期。我也想过滤掉第四列中的空白单元格。我尝试了一些不同的操作,但是该函数返回的整个数组只是过滤了空白列。这是我尝试过的最新代码。
function invPayable(){
var overview = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Overview");
var paymentLog = SpreadsheetApp.openById("1KkR4jE1c00WuQpPrexW8f9BIq5vxl0fWaUGxbeYERsE").getSheetByName("Payment Log");
var paymentArr = paymentLog.getRange(3, 1,paymentLog.getLastRow(),paymentLog.getLastColumn()).getValues();
var startDate = new Date(overview.getRange(3, 1).getValue());
var pay1 = paymentArr.map(function(r){return [r[0],r[1],r[2],r[3]]})
.filter(function(item){
if(item[3]!=""){return true}
if(item[3]>=startDate){return true}
else{return false}
});
//execute
overview.getRange(2, 18,pay1.length,4).setValues(pay1);
overview.getRange(6,1).setValue(startDate);
}//Added by editor
答案 0 :(得分:3)
if(item[3]!=""){return true}
if(item[3]>=startDate){return true}
一旦满足第一个if
条件(即第4列不为空),该函数将结束并返回true
。永远不会检查第二个if
条件。因此,
该函数将返回仅过滤空白列的整个数组。
在结束功能之前检查两个条件。
if(item[3]!="" && item[3]>=startDate ){return true}