Estoy creando reglas de formato condicional personalizadas con este método: ConditionalFormatRuleBuilder .
Sin embargo, si alguna vez lo actualizo, digo el color en .setBackground("#FF0000")
y lo vuelvo a ejecutar, crea una nueva regla de formato condicional que entra en conflicto con la original.
Lo que quiero saber es, en ese ejemplo, ¿hay alguna manera de eliminar la regla definida como regla? Por ejemplo, ¿hay un opuesto de rules.push(rule);
? Algo así como rules.remove(rule);
?
Aquí hay un ejemplo de mi código. Actualmente tengo esto:
var rule1 = SpreadsheetApp.newConditionalFormatRule() .whenTextEqualTo(s1) .setBackground(s1c) .setRanges([r]) .build(); var rules = curSheet.getConditionalFormatRules(); rules.push(rule1); curSheet.setConditionalFormatRules(rules);
¿Sería posible eliminar la regla definida como rule1
?
Si resalta toda la hoja y selecciona Formato condicional en el menú, verá una lista de todas las reglas de formato activas a la derecha de la pantalla.
El orden de las reglas en ese panel es el mismo orden de las reglas en la matriz .getConditionalFormatRules().
Entonces puede usar splice () para eliminar las reglas que desee
function deleteFormat(){ var ss = SpreadsheetApp.getActive(); var sheet = ss.getSheetByName("Sheet1"); var rules = sheet.getConditionalFormatRules(); // if you want to remove rules starting at the 4th rule and delete only 1 rule. rules.splice(3,1); sheet.setConditionalFormatRules(rules); }
Lo probé en una hoja de muestra, y funcionó. Si tiene algún problema, agregue un comentario y lo investigaré.
Además, si desea editar una regla mediante programación, puede usar slice con el constructor.
Esto eliminará la regla anterior en esa posición en la matriz y la reemplazará con la nueva.