在Google App脚本的单元格中处理日期

时间:2020-09-27 16:36:03

标签: javascript arrays date google-apps-script google-sheets

我有一个数组,我想仅在特定时间段后使用日期过滤(数组的第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

1 个答案:

答案 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}