es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Resaltar la celda de Google Sheet (roja) cuando el texto de dos celdas diferentes no coincide.

Básicamente, lo que estoy tratando de lograr es resaltar o establecer el fondo de la celda que tiene una ‘typo’ y no coincide con otra.

Tengo un seguimiento utilizado por mi equipo, ingresan la versión de código en la columna D. La columna C contiene el nombre del entorno, por ejemplo, QA, PROD.

Cuando se completan las actividades de prueba de QA, simplemente copian la versión del código en una fila debajo, pero a veces sucede que ingresan manualmente la versión cometiendo un error (typo), por lo tanto, el código que se implementa en prod será incorrecto y puede causar un mal funcionamiento del sistema.

La columna A será una clave primaria, lo llamaremos de esta manera (módulo).

Estoy tratando de validar el texto que ingresan en la celda, por lo que quiero utilizar la formatización condicional o un script. En mi opinión, la formatización condicional no funcionará correctamente, ya que la función es bastante avanzada, por lo que será más fácil implementar un script. ¿Es correcto el siguiente script?

“`function myColorFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getSheetByName("2022").getRange(1,1);
var cellRange = range.getValues();

for(i = 0; i<cellrange.length-1; i++){
if(cellrange[i][0] == "prod")
elseif(cellrange[i][0] == "qa")
{
ss.getsheetbyname("2022").getrange(i+2,6).setbackground("red");
}
}
}

<pre><code><br />en caso de utilizar la formatización condicional tendría que ser: si el entorno es igual a prod y qa, y si el módulo de qa y prod es el mismo, la versión del código debería coincidir… si no coincide, resaltar una celda de código prod con color rojo… i++){="" if(cellrange[i][0]="=" "prod")="" elseif(cellrange[i][0]="=" "qa")="" {="" ss.getsheetbyname("2022").getrange(i+2,6).setbackground("red");="" }="" }="" }="" “`=”” en=”” caso=”” de=”” utilizar=”” la=”” formatización=”” condicional=”” tendría=”” que=”” ser:=”” si=”” el=”” entorno=”” es=”” igual=”” a=”” prod=”” y=”” qa,=”” y=”” si=”” el=”” módulo=”” de=”” qa=”” y=”” prod=”” es=”” el=”” mismo,=”” la=”” versión=”” del=”” código=”” debería=”” coincidir…=”” si=”” no=”” coincide,=”” resaltar=”” una=”” celda=”” de=”” código=”” prod=”” con=”” color=””></cellrange.length-1; i++){
if(cellrange[i][0] == “prod”)
elseif(cellrange[i][0] == “qa”)
{
ss.getsheetbyname(“2022”).getrange(i+2,6).setbackground(“red”);
}
}
}

en caso de utilizar la formatización condicional tendría que ser: si el entorno es igual a prod y qa, y si el módulo de qa y prod es el mismo, la versión del código debería coincidir… si no coincide, resaltar una celda de código prod con color rojo…>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El script proporcionado no está completo y necesita algunas modificaciones antes de que pueda lograr el resultado deseado. Aquí están los cambios que se pueden hacer:

    • El script debe recorrer todas las filas en la hoja, no solo la primera fila.
    • El script debe verificar si el valor en la columna C es “QA” o “PROD”.
    • Si el valor en la columna C es “QA”, el script debe obtener el valor en la columna D para esa fila y compararlo con el valor en la columna D para la fila de abajo.
    • Si los valores en la columna D no coinciden, el script debe establecer el color de fondo de la celda en la columna D para la fila “QA” en rojo.

    Aquí hay una versión modificada del script:

    “`function myColorFunction() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName(“2022”);
    var lastRow = sheet.getLastRow();

    for (var i = 2; i <= lastRow; i++) {
    var environment = sheet.getRange(i, 3).getValue();

    if (environment == "QA") {
      var codeVersion1 = sheet.getRange(i, 4).getValue();
      var codeVersion2 = sheet.getRange(i+1, 4).getValue();
    
      if (codeVersion1 != codeVersion2) {
        sheet.getRange(i, 4).setBackground("red");
      }
    }
    

    }
    }
    “`

    Este script debe estar adjunto a un disparador que se ejecuta cuando se realizan ediciones en la hoja. También puedes personalizar el color de fondo y ajustar el rango según tus necesidades específicas.

Comments are closed.