Я пытаюсь реализовать функцию поиска в моем Листе Google, используя сценарий и выпадающий на последнем препятствии. Я просто хотел бы знать, может ли кто-нибудь увидеть, что может быть не так в скрипте?
Я очень близок к ожидаемому результату, используя приведенный ниже код (ожидаемый результат - автоматическая фильтрация таблицы критерии пользователя, введенные в ячейку B2), однако фильтр, похоже, на самом деле не применяется.
Вот что я вижу при запуске текущего скрипта: - onEdit обнаруживает изменение ячейки B2 - Фильтр очищается от любых существующих критериев - Новый фильтр (для заголовка в ячейке B4) создается с использованием (определенных пользователем) критериев из ячейки B2 - Фильтр не применяется. Пользователь должен вручную открыть фильтр и нажать «применить»
Очевидно, что выделение жирным шрифтом не должно происходить. Необходимо автоматически применить.
function onEdit(evt)
{
var range = evt.range;
if (range.getRow() == 2 && range.getColumn() == 2)
{
ClearFilter();
Utilities.sleep(200);
ApplyFilter();
}
else
{
Logger.log("Edit out of range");
}
}
function ClearFilter()
{
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('B4').activate();
spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(2);
}
function ApplyFilter()
{
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('B4').activate();
var criteria = SpreadsheetApp.newFilterCriteria()
.whenTextContains('=INDIRECT("BWLRankings!B2")')
.build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(spreadsheet.getActiveRange().getColumn(), criteria);
};