Поиска значения в нескольких Таблицах и сохранение результатов поиска

Есть несколько таблиц Google Sheets, в которых необходимо производить поиск какого-либо значения и возвращать результаты поиска (строками) одну из таблиц В одном примере, нашел такую функцию

var all = SpreadsheetApp.openById().getSheetByName('').createTextFinder().findAll();

for (var i = 0; i < all.length; i++) {
  Logger.log(
    'The sheet %s, cell %s, has the value %s.',
    all[i].getSheet().getName(),
    all[i].getA1Notation(),
    all[i].getValue()
  );
}

Она работает и записывает в Logger.log. Но никак не могу понять, как записывать результаты поиска в какую-либо таблицу.


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

Автор решения: contributorpw

Например, вот так

function myFunction() {
  var all = SpreadsheetApp.openById('')
    .getSheetByName('In')
    .createTextFinder('')
    .findAll();
  var sheetOut = SpreadsheetApp.openById('').getSheetByName('Out');

  const values = [];
  for (var i = 0; i < all.length; i++) {
    Logger.log(
      'The sheet %s, cell %s, has the value %s.',
      all[i].getSheet().getName(),
      all[i].getA1Notation(),
      all[i].getValue()
    );
    const row = [all[i].getSheet().getName(), all[i].getA1Notation(), all[i].getValue()];
    values.push(row);
  }

  sheetOut.clearContents().getRange(1, 1, values.length, values[0].length).setValues(values);
}

Тут поиск для одного листа. Если нужно для нескольких, то необходимо повторить процедуру для каждого в цикле, а вместо sheetOut.clearContents().getRange(1, 1, использовать sheetOut.getRange(sheetOut.getLastRow() + 1, 1,, не забыв сначала очистить лист для результатов.

Пример https://docs.google.com/spreadsheets/d/1M-aPe8XubmrPMJu33JrPGyOc-jR8IVfo6Gza4VMi6fM/edit?usp=sharing

→ Ссылка