Найти тему

Простой скрипт поиска на двух листах


Друзья, недавно встала задача искать данные на двух листах. Конечно, в Таблицах есть встроенный инструмент "найти и заменить" и в нём можно искать на всех листах, но его не стали использовать из-за того, что сотрудники могут промахнуться и нажать "заменить всё" и после найденное заменится на пустоту :)

Поэтому мы написали простой скрипт и делимся им с вами. В начале – вызываем inputBox, чтобы пользователь ввёл то, что мы ищем, далее обращаемся к двум листам и далее проходимся по каждой ячейке каждого листа в цикле и ищем в ней с помощью регулярного выражения наше значение.

Если находим, то добавляем к сообщению, которое будем выводить в конце (сообщение на скриншоте): название листа, то, что мы нашли и номер строки. Номер строки тут условный, он будет правильным только если данные на наших листах начинаются с первой строки. Но для нашей задачи этого вполне хватило.

И сам скрипт:

function search() {
const search = Browser.inputBox('Search');

if (search) {
const ss = SpreadsheetApp.getActive();
const sh0 = ss.getSheetByName('LOADS');
const sh1 = ss.getSheetByName('CANCELED');
const d0 = sh0.getDataRange().getValues();
const d1 = sh1.getDataRange().getValues();
var msg = '';

d0.forEach((row, y) => {
row.map((cell, x) => msg = new RegExp(search, 'i').test(cell) ? msg + '\\n' + 'LOADS' + ', ROW: ' + y + 1 + ' ' + cell : msg);
});

d1.forEach((row, y) => {
row.map((cell, x) => msg = new RegExp(search, 'i').test(cell) ? msg + '\\n' + 'CANCELED' + ', ROW: ' + y + 1 + ' ' + cell : msg);
});

Browser.msgBox(msg)
};
};

ПС В комментарии пришел Кирилл и показал свой вариант с textFinder
Простой скрипт поиска на двух листах  Друзья, недавно встала задача искать данные на двух листах.
1 минута