Я пытаюсь добавить пользовательское форматирование в отчет, чтобы любой бренд, который его использует, мог изменить свои фирменные цвета.
В настоящее время у меня меняется цвет ячейки, но я хочу, чтобы менялись только эти ячейки. цвет, если у них есть границы. Таким образом, он использует границу в качестве проверки AND.
Вот текущая версия, которая изменит ячейки, если они соответствуют цвету. Однако, если они изменяются на белый, а затем вы хотите изменить на другой цвет, то весь лист изменит цвет. Поэтому я подумывал, как сделать набор ячеек уникальным, чтобы скрипт действовал только на них.
function colorReplace() {
var spread = SpreadsheetApp.openByUrl('SPREADSHEET_URL');
var doc = spread.getSheetByName("DASHBOARD_NAME");
var settings = spread.getSheetByName("Settings");
// get all the existing active sheet background colours
var cells = doc.getRange(1, 1, doc.getLastRow(), doc.getLastColumn()).getBackgrounds();
var rows = cells.length;
var cols = cells[0].length;
var primary = doc.getRange('E2').getBackground(); // Get background of ref cell
var primaryReplace = settings.getRange('B2').getValue(); // Get background from cell in settings
var border = settings.getRange('B5').getValue(); // Get border colour from cell in settings
//Logger.log(primary);
//Logger.log(primaryReplace);
Boolean for those cells which have a border
// iterate accross
for (var i = 0; i < rows; i++){
for (var j = 0; j < cols; j++){
if (cells[i][j] == primary && cells[i][j] == check ){
// if cells equal cell colour and they have a border. Possibly could just change this to if cells have a border?
cells[i][j] = primaryReplace; // Cell Colour Change
}
}
}
// update backgound colours
doc.getRange(1, 1, doc.getLastRow(), doc.getLastColumn()).setBackgrounds(cells);
}