function getBackgroundColor(rangeSpecification) { var sheet = SpreadsheetApp.getActiveSpreadsheet(); return sheet.getRange(rangeSpecification).getBackgroundColor(); } function sumWhereBackgroundColorIs(color, rangeSpecification) { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var range = sheet.getRange(rangeSpecification); var x = 0; for (var i = 1; i <= range.getNumRows(); i++) { for (var j = 1; j <= range.getNumColumns(); j++) { var cell = range.getCell(i, j); if(cell.getBackgroundColor() == color) x += parseFloat(cell.getValue()); } } return x; } function onOpen(e) { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var entries = [{ name : "Refresh", functionName : "refreshLastUpdate" }]; sheet.addMenu("Refresh", entries); }; function refreshLastUpdate() { SpreadsheetApp.getActiveSpreadsheet().getRange('A70').setValue(new Date().toTimeString()); } function onChange(e){ var sheet = SpreadsheetApp.getActiveSpreadsheet(); sheet.duplicateActiveSheet(); } function countCellsWithBackgroundColor(color, rangeSpecification) { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var range = sheet.getRange(rangeSpecification); var x = 0; for (var i = 1; i <= range.getNumRows(); i++) { for (var j = 1; j <= range.getNumColumns(); j++) { var cell = range.getCell(i, j).getBackground(); if (cell == color) { x++; } } } return x; }
wrote a script that counts the number of cells of a certain color in a given range. If I change the number of cells of a given color, the function does not automatically recalculate the number of cells. How to make the function recalculate automatically?
