0

I got data like this one: enter image description here

I want to filter in column G in the way it only shows data between two dates for example between 12/01 and 12/15, this way:

enter image description here

I manage to create a filter that make it but I am trying to do it via Google App Script. Here what I tried until now:

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);
}

The problem here is that when I execute it the number format in filter criteria in unformated: enter image description here

1 Answers1

0

The whenNumberBetween() filter is for numbers

If you want to use it on dates, you need to convert the dates into their equivalent DATEVALUE.

You can do it by first getting the unix timestamp of the date with getTime() and then convert it to years and calcualte the Excel /Sheets date.

The result is the number you can use for whenNumberBetween()

Sample:

  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);  
ziganotschka
  • 25,866
  • 2
  • 16
  • 33