#google-apps-script
#google-apps-script
Вопрос:
Я нашел приведенный ниже скрипт из одного из сообщений Stackoverflow.. это почти соответствует моим требованиям, но мне нужно немного изменений… Нравится.. Я не хочу заменять, я только хочу, чтобы он находил мое значение в определенном столбце, а также хотел, чтобы он переходил в эту ячейку, когда находит значение. Может кто-нибудь мне помочь?
также.. Я хочу, чтобы для запуска макроса использовалась комбинация клавиш … вместо Ctrl F.. Я хочу, чтобы он отображал запрос поиска, когда я нажимаю Ctrl F … возможно ли это??
function findingReplacing()
{
var s = SpreadsheetApp.getUi().prompt("Search String", "Please enter desired search string", SpreadsheetApp.getUi().ButtonSet.OK).getResponseText();
var rng = SpreadsheetApp.getActiveSheet().getRange('D:D');
var rngA = rng.getValues();
for(var i=1;i<rngA.length;i )
{
if(rngA[i][0]==s)
{
rngA
Комментарии:
1. Используйте поиск текста. Google или поиск здесь для соответствующих сообщений.
Ответ №1:
Как упоминалось @Marios, самый простой способ — использовать TextFinder в выбранном вами диапазоне.
Вот пример кода:
function findingAndSelect()
{
var s = SpreadsheetApp.getUi().prompt("Search String", "Please enter desired search string", SpreadsheetApp.getUi().ButtonSet.OK).getResponseText();
var rng = SpreadsheetApp.getActiveSheet().getActiveRange();
Logger.log(s);
// Creates a text finder for the range.
var textFinder = rng.createTextFinder(s);
textFinder.matchEntireCell(true);
textFinder.matchCase(false);
// Returns the first occurrence of the string.
var result = textFinder.findAll();
if (result.length == 0){
/* string not found */
SpreadsheetApp.getUi().alert("Search String", "String not found",SpreadsheetApp.getUi().ButtonSet.OK);
}else{
result.forEach((range) => { range.setBackground('#d5f5df');});
}
}
Как использовать?
- Выберите весь столбец, в котором вы хотите выполнить поиск.
- Введите строку для поиска.
- Нажмите OK.
Что он делает?
- Попросите строку для поиска.
- Получите активный диапазон / выбранный диапазон, где искать строку (в вашем случае должен быть выбран весь столбец).
- Создайте средство поиска текста и найдите входную строку.
- Проверьте, была ли найдена строка. Затем измените цвет фона всех диапазонов, в которых была найдена строка
Дополнительная информация:
Вы также можете указать желаемые параметры поиска в текстовом поисковике. Пожалуйста, проверьте TextFinder, чтобы увидеть доступные методы.
Если вы хотите сопоставить строку со всей ячейкой, вы можете использовать matchEntireCell() и установить значение true .
// Match the entire content of a cell.
textFinder.matchEntireCell(true);
Если вы хотите сопоставить строку на основе ее регистра, вы можете использовать MatchCase() и установить значение true .
// Match the search text's case exactly
textFinder.matchCase(true);
Вывод:
Импорт функций в виде макросов
- В пользовательском интерфейсе Google Sheets выберите Сервис> Макросы> Импорт.
- Выберите функцию из представленного списка и нажмите Добавить функцию.
- Выберите очистить, чтобы закрыть диалоговое окно.
- Выберите Сервис> Макросы> Управление макросами.
- Найдите только что импортированную функцию в списке. Назначьте макро-макро уникальное сочетание клавиш. Вы также можете изменить имя макроса здесь; имя по умолчанию соответствует имени функции.
- Нажмите Обновить, чтобы сохранить конфигурацию макроса.
Примечание: вы можете связать макрос с сочетанием клавиш в форме Ctrl Alt Shift Number
Комментарии:
1. Привет, Рон, еще одна вещь… он находит первое вхождение, но в моем столбце у меня повторяющиеся значения.. и я хочу, чтобы он переносил его в каждую ячейку, где находится значение .. в этом случае .. как мне настроить код?
2. Это невозможно для
textFinder
. Когда функция скрипта приложений была выполнена успешно, она очистит все данные на основе областей. Я попытался проверить Apps Script CacheService , но он может сохранять только строковое значение в кэше. Изначально я планировал создать другую функцию для вызоваtextFinder.findNext()
после успешного сохраненияtextFinder
в кэше изfindingAndSelect()
.3. Один из способов, который я мог бы предложить, — изменить цвет фона всех соответствующих ячеек при вызове
findingAndSelect()
. Если вас это устроит, вам просто нужно выполнить циклtextFinder.findNext()
и изменять каждую ячейку, пока она не вернет значение null4. Привет, Рон, как я уже упоминал ранее.. Я не очень хорошо разбираюсь в Appscript… Я согласен с обходным путем, не могли бы вы помочь добавить этот код в приведенный выше пример кода?
5. Я не уверен, почему вы предпочитаете создавать такую функцию вместо того, чтобы просто использовать CTRL F для поиска строки, но если вы настаиваете, пожалуйста, обратитесь к обновленному ответу