Как скриптом в Google Sheets перенести отфильтрованные данные на другой лист/таблицу

Кто может подсказать как можно выбрать отфильтрованные данные из одного листа и скопировать их на другой лист? те нужно выбрать только строки которые отобрались фильтрами. Я написал такой код, но он получается выбирает весь диапазон подлежащий фильтрации.

  const sheetWork = 'График';   // Имя листа с рабочей информацией

  var ss = SpreadsheetApp.getActive();
  var ssUI = SpreadsheetApp.getUi();
  var sWork = ss.getSheetByName(sheetWork);
  if (sWork == null) {
    ssUI.alert('Не найден лист с данными');
    return;
  }
  //sWork.activate();
  var rangeFilter = sWork.getFilter().getRange();
  Logger.log('Ширина диапазона: ' + rangeFilter.getWidth() + '\n' + 'Высота диапазона: ' + rangeFilter.getHeight());

Прошу помочь знающих)


Ответы (1 шт):

Автор решения: Алексей Р

Просто скопируйте диапазон под фильтром. То, что невидимо, скопировано не будет.

function myFunction() {
  const sheetWork = 'График';   // Имя листа с рабочей информацией
  const sheetDest = 'График2';   // Имя листа, куда копировать

  var ss = SpreadsheetApp.getActive();

  const sWork = ss.getSheetByName(sheetWork);
  const sDest = ss.getSheetByName(sheetDest);
  
  var rangeFilter = sWork.getFilter().getRange();
  rangeFilter.copyTo(sDest.getRange('A2'),SpreadsheetApp.CopyPasteType.PASTE_NORMAL);
}

Ну и однострочник :)

function myFunction2() {
  SpreadsheetApp.getActive().getSheetByName('График').getFilter().getRange().copyTo(SpreadsheetApp.getActive().getSheetByName('График2').getRange('A2'));
}
→ Ссылка