Скрипт в таблице гугл: фильтр по значению, копирование и вставка нужных столбцов, а не всего диапазона
Всем здравия!
В данном случае строка содержит 136 столбцов, фильтруем по 8-му столбцу, затем надо скопировать и вставить в другой файл, допустим, столбцы 134-136. Задавал диапазон var rng = sht.getRange(3,134,10000,3), думал будет по аналогии с функцией FILTER(), но нет - скрипт работает только в том случае, если в диапазоне содержится столбец, по которому фильтруем... Ещё было решение вставлять все 136 столбцов и удалять ненужные 133, но это вообще, как мне видится, не по-православному.
- Подскажите, что нужно изменить в имеющемся коде, чтобы можно было копировать и вставлять отфильтрованный диапазон, не содержащий столбец, по которому идёт фильтрация?
- Как можно модифицировать скрипт, чтобы можно было фильтровать по двум и более столбцам?
Здесь нашёл фрагмент кода, который фильтрует таблицу гугл по значению и вставляет отобранные строки в указанный лист.
Буду признателен за наводку на оптимальные решения по каждому вопросу :)
function spisanie()
{//количества списано
const SOURCE1 = SpreadsheetApp.openById("Тут идентификатор таблицы гугл");
const sht = SOURCE1.getSheetByName("Продажи");
var ss = SpreadsheetApp.getActive();
var sheet2 = ss.getSheetByName("Монитор"); //лист с настройками
var diap = sheet2.getRange("A1").getValue(); //значение для фильтра
var rng = sht.getRange(3,1,10000,136);// фильтруемый диапазон
var PasteSht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Списания');//лист для вставки данных в текущей книге
var rngA = rng.getValues();//вот отсюда пошел фрагмент чужого кода (не стал переименовывать переменные)
var yesesA = []
for(var i=0;i<rngA.length;i++)
{
if(rngA[i][7]==diap)
{
yesesA.push(rngA[i])
}
}
var yesesRng = PasteSht.getRange(3, 1, yesesA.length, yesesA[0].length);
yesesRng.setValues(yesesA);
}
Благодарю за внимание и предложенные решения
Ответы (1 шт):
Ответили на англоязычном stackoverflow.com, может, кому пригодится