Здравствуйте! Я хотел бы обсудить инструмент условного форматирования в Гугл.Таблицах, который, несмотря на свою удобность, имеет одну серьёзную недоработку. При неправильном использовании, например, при копировании ячейки без применения функции "Только значения", диапазоны применения могут изменяться. Это приводит к тому, что, скажем, диапазон "A2:B7000" может преобразоваться в что угодно — от "A2:A6000,A6001,A6002,A6003:B7000" до "A2:A50,A55,A56,A57:B7000", что даже непредсказуемо и порой приводит к потере данных (как, например, строки A51-A54). Поскольку такие ситуации у нас происходят гораздо чаще, чем хотелось бы, стало вопросом оптимизации работы. У нас на одном листе более 15 правил, и ручное редактирование занимает много времени. Скажите, существует ли способ заблокировать изменение диапазонов в правилах условного форматирования (не запрещая добавление новых строк в таблицу)? Или, что было бы значительно удобнее, можно ли настроить через скрипт добавление или обновление правил условного форматирования (и именно правил, а не самого условного форматирования)? Учитывая, что использование скрипта для условного форматирования неудобно из-за задержек с onEdit, а запуск через кнопку в данном контексте нецелесообразен, буду признателен за любые советы.
К сожалению, на данный момент Google Sheets не предоставляет встроенной функции, которая позволила бы блокировать изменение диапазонов в правилах условного форматирования. Однако вы можете использовать Google Apps Script для автоматизации создания или обновления правил условного форматирования. Вот пример кода, который поможет вам установить или обновить правила условного форматирования на заданном диапазоне. Этот скрипт заменяет существующие правила условного форматирования на новые с заданными диапазонами. ```javascript function setConditionalFormatting() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Определите диапазон, для которого вы хотите установить правила var range = sheet.getRange("A2:B7000"); // Очищаем существующие правила var rules = sheet.getConditionalFormatRules(); rules = []; // Удалить все правила // Создаем новое правило условного форматирования var rule1 = SpreadsheetApp.newConditionalFormatRule() .whenNumberGreaterThan(0) // Пример условия: значение больше 0 .setBackgroundColor("#FF0000") // Цвет фона .setRanges([range]) // Устанавливаем диапазон .build(); // Добавляем созданное правило в массив правил rules.push(rule1); // Применяем правила к листу sheet.setConditionalFormatRules(rules); } ``` ### Как использовать этот код: 1. Откройте Google Sheets, в котором вы хотите изменить правила условного форматирования. 2. Нажмите `Extensions` -> `Apps Script`. 3. Удалите все содержимое файла и вставьте приведенный выше код. 4. Сохраните проект и назовите его. 5. Запустите функцию `setConditionalFormatting`, нажав на значок "Запустить" (треугольник) в верхней части редактора Apps Script. ### Доработка: Вы можете настроить условия (например, `.whenNumberGreaterThan(0)`) и параметры (например, цвет фона) в соответствии с вашими потребностями. Добавляйте или изменяйте правила, добавляя дополнительные блоки, аналогичные `rule1`, и размещайте их в массиве `rules`. ### Ограничение: Обратите внимание, что этот метод полностью заменяет существующие правила условного форматирования, поэтому если у вас есть другие правила, которые вы не хотите удалять, вам нужно будет сохранить их, а затем добавить или изменить по мере необходимости. Если вы хотите запустить этот скрипт автоматически при изменении, вы можете использовать триггеры Google Apps Script, но учтите, что срабатывание триггера при редактировании может повлечь задержки из-за ограничений по времени выполнения.
Указывайте диапазон через INDIRECT (ДВССЫЛ):INDIRECT("A2:B7000")
вместоA2:B7000
.