Скрипт в таблице гугл: фильтр по значению, копирование и вставка нужных столбцов, а не всего диапазона

Всем здравия! В данном случае строка содержит 136 столбцов, фильтруем по 8-му столбцу, затем надо скопировать и вставить в другой файл, допустим, столбцы 134-136. Задавал диапазон var rng = sht.getRange(3,134,10000,3), думал будет по аналогии с функцией FILTER(), но нет - скрипт работает только в том случае, если в диапазоне содержится столбец, по которому фильтруем... Ещё было решение вставлять все 136 столбцов и удалять ненужные 133, но это вообще, как мне видится, не по-православному.

  1. Подскажите, что нужно изменить в имеющемся коде, чтобы можно было копировать и вставлять отфильтрованный диапазон, не содержащий столбец, по которому идёт фильтрация?
  2. Как можно модифицировать скрипт, чтобы можно было фильтровать по двум и более столбцам?

Здесь нашёл фрагмент кода, который фильтрует таблицу гугл по значению и вставляет отобранные строки в указанный лист.

Буду признателен за наводку на оптимальные решения по каждому вопросу :)

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 шт):