Как с помощью google script сделать нажатие нескольких чекбоксов, при нажатии на "главный чекбокс" и при определенных условиях в соседних ячейках?
Доброго времени, пытаюсь реализовать групповое нажатие чекбоксов, работать это должно следующим образом: Например есть таблица где три колонки A,B,C. Чекбоксы находятся в колонке "C". При нажатии чекбокса и установив ему истина или ложь, если в этой же строке в колонке "B" пустое значение, то нужно выделить диапазон по колонке "С" вниз до строки, где будет тоже пустое значение в колонке "B" и проставить для всего диапазона тоже самое значение(истина или ложь).
Пытался сделать это формулой но ничего не получается, с учетом того что строки постоянно меняются, удаляются и добавляются новые. Думаю что можно решить эту задачу с помощью onEdit и не могу сообразить и написать логику алгоритма, прошу помощи и навести на нужные мысли.
Ответы (1 шт):
Какие-либо табличные формулы не помогут в данной задаче.
А вот google-script через onEdit
- вполне реализуемая задача.
Алгоритм довольно прост, и их можно сочинить несколько.
Но самое главное, что является базой - это надо определить ключевые строки, т.е. те, в которых есть слово "Группа" в ячейке А
(возможны и другие варианты слов, которые можно использовать как ключевые, и они определяют группировку).
Ну а далее самый простейший алгоритм, когда нажимают чекбокс в групповой (Ключевой строке) и сразу меняются все чек-боксы в этой подгруппе.
- Срабатывает
onEdit
:- сразу проверяем, этот лист или нет. Если нет - выходим из скрипта.
- выделяем строку-диапазон, где сработал триггер -
var selectedRange =
- Проверяем ячейку
А
на ключевое слово (в данном случае "Группа"). Если нет - выходим из скрипта.
- Если первичная проверка прошла, то продолжаем:
- записываем текущее значение ячейки
С
в промежуточную переменную типаCurrentVar
. - перебираем строки вниз:
- если в следующей строке в ячейке
А
нет ключевого слова "Группа", тогда в ячейкуС
записываем промежуточное значениеCurrentVar
. - если в следующей строке в ячейке
А
есть ключевое слово "Группа", тогда заканчиваем скрипт. - если в следующей строке в ячейке
А
вообще нет никаких слов, т.е. пустая, значит дошли до конца списка и заканчиваем скрипт.
- если в следующей строке в ячейке
- записываем текущее значение ячейки