Estoy tratando de revisar 2 columnas y establecer el color de ellas en rojo si no son iguales a la cadena específica, pero no funciona conmigo.
Aquí está mi código.
function setCellColors() { //Get the sheet you want to work with. const thisSheet = SpreadsheetApp.openByUrl(THIS).getSheetByName('Project'); var range = thisSheet.getRange("V3:W").getValues(); var newData = range; for (var i in newData) { if(newData!== "There is no NCR" && newData !=="N/A" && newData!=="There is no Reason Codes"){ newData.setBackground("red"); } } }Sigo recibiendo este error "Error de tipo: newData.setBackground no es una función", lo cual creo porque newData es una matriz, pero ¿cómo lo cambiaría a cadena en ese caso, y el resto del código es correcto?
Si necesita más información por favor hágamelo saber
Gracias.
function setCellColors() { const ss = SpreadsheetApp.getActive(); const sh = ss.getActiveSheet(Project); const tA = ["There is no NCR", "N/A", "There is no Reason Codes"]; const vs = sh.getRange(3, 22, sh.getLastRow() - 2, 1).getValues(); const newData = vs; vs.forEach((r, i) => { if (!~tA.indexOf(r[0])) { sh.getRange(i + 3, 22).setBackground("red"); } }); }No está muy claro cuál de las columnas debe o no contener uno de los textos. Supongo que es la columna 'V'. En este caso puedes probar este código:
function setCellColors() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var texts = ['There is no NCR', 'N/A', 'There is no Reason Codes']; var range = sheet.getRange('V3:W'); var values = range.getValues(); var backgrounds = range.getBackgrounds(); for (var row in values) { if (texts.includes(values[row][0])) { backgrounds[row][0] = 'red'; backgrounds[row][1] = 'red'; } } range.setBackgrounds(backgrounds); }El resultado:
Si desea verificar ambas columnas, puede cambiar esta línea:
if (texts.includes(values[row][0])) {con este:
if (texts.includes(values[row][0]) || texts.includes(values[row][1])) {