Как скриптом в 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'));
}