Возвращает название листа при использовании текстового видоискателя в скрипте приложения Google листов

#javascript #google-apps-script #google-sheets

Вопрос:

Я ищу слово в электронной таблице с помощью текстового навигатора в скрипте Google листов.

Я хотел бы иметь в качестве вывода название листа, на котором был найден текст.

Обычно они будут содержать только 1 это ключевое слово в электронной таблице и наверняка только один раз на листе.

Если в электронной таблице найдено более 1, было бы неплохо вернуть все имена листов.

Код:

 function TestCMNDH() {
  var source = SpreadsheetApp.openById('SheetID');
  var found = source.createTextFinder('Wordtosearch').matchCase(false).findAll();
  Logger.log(found)
};

Current output: [Range]
 

Любая помощь будет очень признательна!
Спасибо!

Ответ №1:

Вы могли бы сделать что-то подобное, чтобы получить уникальное имя списка электронных таблиц, в которых был найден текст:

 function myFunction() {
  var source = SpreadsheetApp.openById('SheetID');
  var foundRange = source.createTextFinder('Wordtosearch').matchCase(false).findAll();

  var sheetNames = foundRange.map(range => range.getSheet().getName());
  var uniqSheetNames = [...new Set(sheetNames)];

  uniqSheetNames.forEach(sheetName => Logger.log(sheetName));
}
 

То, что вы получаете в результате выполнения findAll функции, — это массив диапазона.

Вы можете получить лист , к которому принадлежит этот лист, используя getSheet() , и вы можете получить имя этого листа, используя getName()

Поэтому я сопоставляю этот массив Range в массив имен листов:

var sheetNames = foundRange.map(range => range.getSheet().getName());

В следующей строке удалите все возможные дубликаты, а затем просто запишите имена в последней строке

Комментарии:

1. Работает отлично, спасибо!