任何想法都是为什么此Google App脚本过滤器无法正确过滤的原因

时间:2019-11-27 00:17:31

标签: google-apps-script filter

我写了以下代码


function onEdit(e) {

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var tabProgram = "Test";
  var TabUpcomingTransposed = "Data"
  var UpcomingTransposedss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(TabUpcomingTransposed);
  var activeCell = ss.getActiveCell();


  //Get array of data to filter if Date dropdown is changed
  if(activeCell.getColumn() == 4 && activeCell.getRow() == 2  && ss.getSheetName() === tabProgram){

    //get Data in an array form sheet
    var ArrayofPrograms = UpcomingTransposedss.getRange(2, 1,UpcomingTransposedss.getLastRow() , UpcomingTransposedss.getLastColumn()) .getValues();
    //Logger.log(ArrayofPrograms);

    //Get Date from dropdown
    var Program_date = Utilities.formatDate(activeCell.getValue(), "GMT+1", "dd-MMM-yyyy");
    Logger.log(Program_date);


    //filter on array by selected date
    var ProgramsFiltered = ArrayofPrograms.filter(function(item){
      /return true;
      //return false;

      var filter_date =  Utilities.formatDate(item[0], "GMT+1", "dd-MMM-yyyy");

      if (filter_date.valueOf() == Program_date.valueOf()) {
        Browser.msgBox('Test', 'True', Browser.Buttons.OK); 
        return true;
      } else {
        Browser.msgBox('Test', 'False', Browser.Buttons.OK); 
        return false; 
      }
    });

    Browser.msgBox('Test', 'Filter Done', Browser.Buttons.OK); 
    Logger.log(ProgramsFiltered); 


  } else {
    //Nothing
  }

}

如果我运行该代码,则会收到一条弹出消息,提示“过滤器已完成”,并且在查看日志时会得到一个数组,其中包含所有初始数组中的项。

如果我注释掉return true;,则会收到一条弹出消息,表示“过滤器已完成”,当我查看日志时,会得到一个Emperty数组“ []”

如果我注释掉return true;return false;行,则会得到15条弹出消息,它们对应于原始测试数组中的15个项目。有些人会说是对,有些人会说错。 “过滤器完成”弹出窗口将不会出现,当我进入视图日志时,它为空。

为什么这行不通?

0 个答案:

没有答案