Я ищу решение для условного форматирования, в котором для нового цвета фона ячейки задан уникальный текст . Изображение ниже показывает это.
Хитрость в том, что я заранее не знаю ни одного из значений в списке.
onEdit
indexOf
Образец:
function onEdit(e) { if(e.range.getColumn()==1){ var text = e.value; var sheet = SpreadsheetApp.getActive().getActiveSheet(); var range = sheet.getRange(1,1,sheet.getLastRow(),1); var values = range.getValues(); var array = []; var row = e.range.getRow(); for (var i =0; i <values.length; i++){ if(row!=(i+1)) { array.push(values[i][0]); } } if(array.indexOf(text)==-1){ var backgrounds = range.getBackgrounds(); var color = getRandomColor(); while(backgrounds.indexOf(color)>-1){ color = getRandomColor(); } buildConditionalFormatting(text, color) } } } function getRandomColor() { var letters = '0123456789abcdef'; var color = '#'; for (var i = 0; i < 6; i++) { color += letters[Math.floor(Math.random() * 16)]; } return color; } function buildConditionalFormatting(text, color){ var sheet = SpreadsheetApp.getActiveSheet(); var formattingRange = sheet.getRange("A:A"); var rule = SpreadsheetApp.newConditionalFormatRule() .whenTextEqualTo(text) .setBackground(color) .setRanges([formattingRange]) .build(); var rules = sheet.getConditionalFormatRules(); rules.push(rule); sheet.setConditionalFormatRules(rules); }