【问题标题】:Filter between two data in Google Script在 Google Script 中的两个数据之间进行过滤
【发布时间】:2022-01-12 13:50:29
【问题描述】:

我得到了这样的数据:

我想在 G 列中过滤它只显示两个日期之间的数据,例如 12/01 和 12/15 之间的数据,这样:

我设法创建了一个过滤器,但我正在尝试通过 Google App Script 来实现。 这是我到目前为止所尝试的:

function CopyData(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var copySheet = ss.getSheetByName("Histórico");
  const  pasteSheet = ss.insertSheet();

  copySheet.getRange("A:K").copyTo(pasteSheet.getRange("A:K"), {contentsOnly:true});
  copySheet.getRange("A:K").copyTo(pasteSheet.getRange("A:K"), {formatOnly:true});

  const  range = pasteSheet.getRange("A:I");
  const  filter = range.createFilter();
  var date1 = new Date('2021-12-03'); //mm-dd-yyyy
  var date2 = new Date('2021-12-12'); //mm-dd-yyyy
  
  const Filter_Criteria1 = SpreadsheetApp.newFilterCriteria().whenDateAfter(date1);
  Logger.log(date1);
  

  const Filter_Criteria2 = SpreadsheetApp.newFilterCriteria().whenNumberBetween(2021-12-01,2021-12-25);

  const coll1 = 7;

  const  add_filter2 =  filter.setColumnFilterCriteria(coll1,Filter_Criteria2);
}

这里的问题是,当我执行它时,过滤条件中的数字格式未格式化:

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    whenNumberBetween() 过滤器用于数字

    如果你想在日期上使用它,你需要将日期转换成它们等效的DATEVALUE

    您可以先用getTime() 获取日期的unix timestamp,然后将其转换为年份并计算Excel /Sheets date

    结果是您可以用于whenNumberBetween()的数字

    示例:

      var date1 = new Date('2021-12-03');
      var date2 = new Date('2021-12-12');
      var number1 = date1.getTime()/1000/86400 + 25569;
      var number2 = date2.getTime()/1000/86400 + 25569;
      const Filter_Criteria2 = SpreadsheetApp.newFilterCriteria().whenNumberBetween(number1, number2); 
      filter.setColumnFilterCriteria(coll1, Filter_Criteria2);  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多