#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. Работает отлично, спасибо!