【问题标题】:Working with Dates within cells in Google App Scripts在 Google App Scripts 中处理单元格内的日期
【发布时间】:2020-09-27 16:36:03
【问题描述】:

我有一个数组,我想只使用某个时期之后的日期(数组中的第 4 列)来过滤它。 startDate 变量是单元格中我要过滤数组的日期。我还想过滤掉第 4 列中的空白单元格。我尝试了一些不同的方法,但是该函数返回整个数组,只过滤了空白列。这是我尝试过的最新代码。

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

【问题讨论】:

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


    【解决方案1】:

    问题:

    if(item[3]!=""){return true}
    if(item[3]>=startDate){return true}
    

    一旦满足第一个if 条件(即第4 列不为空),函数结束并返回true。第二个if 条件永远不会被检查。因此,

    该函数返回整个数组,只过滤了空白列。

    解决办法:

    在结束函数之前检查这两个条件。

    片段:

    if(item[3]!="" && item[3]>=startDate ){return true}
    

    【讨论】:

    • 您好!这行得通。不敢相信我错过了这个。谢谢
    猜你喜欢
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多