Когда я копирую вставку из другого диапазона, я теряю созданные мной условные форматы. Поэтому я хочу, чтобы они остались такими же, как я отформатировал, или я хотел бы, чтобы они применялись снова после копирования / вставки.
При ответе выше я понял, что вы хотите сохранить условные форматы, которые =($A3<>"")*(B3="")
для B3:H1001
и =$R:$R="No"
для A3:R1001
, даже если диапазон скопирован и вставлен в B3:H1001
и A3:R1001
.
Если мое понимание верно, как насчет этого ответа ? Думайте об этом как об одном из нескольких возможных ответов.
Проблема и обходное решение:
К сожалению, на данном этапе, к сожалению, в скрипте Google Apps нет методов прямой защиты условных форматов. Поэтому в этом случае в качестве обходного пути я хотел бы предложить перезаписать условные форматы при изменении условных форматов и ячеек, используя триггер события OnChange.
Поток:
- диапазон копируется и параметры условных форматов изменяются.
- Сценарий автоматически запускается триггером события OnChange.
- Существующие условные форматы удаляются и устанавливаются новые условные форматы.
Использование:
1. Скопируйте и вставьте образец сценария
Пожалуйста, скопируйте и вставьте следующий образец сценария.
Пример сценария:
Пожалуйста, укажите имя листа.
function onChange(e) {
const sheetName = "Sheet1"; // Please set the sheet name.
if (e.source.getActiveSheet().getSheetName() != sheetName || e.changeType != "OTHER") return;
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var rules = sheet.clearConditionalFormatRules();
const rule1 = SpreadsheetApp.newConditionalFormatRule()
.setRanges([sheet.getRange("B3:H")])
.setBackground("green")
.whenFormulaSatisfied('=($A3<>"")*(B3="")').build();
const rule2 = SpreadsheetApp.newConditionalFormatRule()
.setRanges([sheet.getRange("A3:R")])
.setBackground("green")
.whenFormulaSatisfied('=$R:$R="No"').build();
sheet.setConditionalFormatRules([rule1, rule2]);
SpreadsheetApp.flush(); // This line might not be required.
}
- В этом примере Сценарий, 2 условных формата в вашем вопросе установлены в качестве фона зеленого цвета.
2. Установите триггер события OnChange
Пожалуйста, установите триггер события OnChange для функции onChange
.
3. Тестовый прогон
В качестве тестового прогона скопируйте и вставьте диапазон в sheetName
. Таким образом, скрипт запускается триггером события OnChange.
Примечание:
- Я думаю, что триггер события OnEdit также можно использовать. Но в этом случае при изменении параметров условных форматов триггер события не запускается. Поэтому я использовал триггер события OnChange.
Ссылки: