Как с помощью google script сделать нажатие нескольких чекбоксов, при нажатии на "главный чекбокс" и при определенных условиях в соседних ячейках?

введите сюда описание изображения Доброго времени, пытаюсь реализовать групповое нажатие чекбоксов, работать это должно следующим образом: Например есть таблица где три колонки A,B,C. Чекбоксы находятся в колонке "C". При нажатии чекбокса и установив ему истина или ложь, если в этой же строке в колонке "B" пустое значение, то нужно выделить диапазон по колонке "С" вниз до строки, где будет тоже пустое значение в колонке "B" и проставить для всего диапазона тоже самое значение(истина или ложь).

Пытался сделать это формулой но ничего не получается, с учетом того что строки постоянно меняются, удаляются и добавляются новые. Думаю что можно решить эту задачу с помощью onEdit и не могу сообразить и написать логику алгоритма, прошу помощи и навести на нужные мысли.


Ответы (1 шт):

Автор решения: BotYourBiz

Какие-либо табличные формулы не помогут в данной задаче.

А вот google-script через onEdit - вполне реализуемая задача. Алгоритм довольно прост, и их можно сочинить несколько.

Но самое главное, что является базой - это надо определить ключевые строки, т.е. те, в которых есть слово "Группа" в ячейке А (возможны и другие варианты слов, которые можно использовать как ключевые, и они определяют группировку).

Ну а далее самый простейший алгоритм, когда нажимают чекбокс в групповой (Ключевой строке) и сразу меняются все чек-боксы в этой подгруппе.

  1. Срабатывает onEdit:
    • сразу проверяем, этот лист или нет. Если нет - выходим из скрипта.
    • выделяем строку-диапазон, где сработал триггер - var selectedRange =
    • Проверяем ячейку А на ключевое слово (в данном случае "Группа"). Если нет - выходим из скрипта.
  2. Если первичная проверка прошла, то продолжаем:
    • записываем текущее значение ячейки С в промежуточную переменную типа CurrentVar.
    • перебираем строки вниз:
      • если в следующей строке в ячейке А нет ключевого слова "Группа", тогда в ячейку С записываем промежуточное значение CurrentVar.
      • если в следующей строке в ячейке А есть ключевое слово "Группа", тогда заканчиваем скрипт.
      • если в следующей строке в ячейке А вообще нет никаких слов, т.е. пустая, значит дошли до конца списка и заканчиваем скрипт.
→ Ссылка