martes, 4 de enero de 2022

Office Scripts: IF ELSE y SWITCH Condicionales

En las entradas del blog previas hemos repasado como construir nuestros bucles (FOR o WHILE), lo que nos permite recorrer partes o elementos de nuestros objetos...
Eso está muy bien, pero sin aplicar condiciones que segmenten los valores recorridos, poco podremos hacer.
Y aquí es, entre otras muchas y distintas casuísticas, donde entran en juego los condicionales:
IF ELSE y SWITCH
.

La instrucción IF ELSE normalmente se emplea para verficiar ciertas condiciones... y en otros casos cuando necesitamos ejecutar otras rutinas cuando se den las condiciones especificadas.
La sintaxis de la sentencia de control sería, en su forma simple:
if (Condición_Prueba Lógica)
{
// nuestro código a procesar si cumple la condición
}

O bien en su forma más completa, donde indicamos la acción en caso de no cumplir la condición dada:
if (Condición_Prueba Lógica)
{
// nuestro código a procesar si cumple la condición
else
// nuestro código a procesar si NO cumple la condición
}

Veamos un ejemplo donde evaluaremos el valor de cada celda de un rango dado, verificando si el valor es mayor o menor a 18:
function main(workbook: ExcelScript.Workbook)
{
  let Hoja = workbook.getActiveWorksheet();
  let Edades = Hoja.getRange("A1:A10").getValues(); 
  let texto: string;
  
  Edades.forEach(edad => 
    {
      if (+edad < 18)
        texto = 'Menor de edad';
      else
        texto = 'Mayor de edad';

      console.log( texto );
    });
}

Office Scripts: IF ELSE y SWITCH Condicionales

Por supuesto podemos incorporar tantas respuestas 'else' como sean necesarias (sujetas a otras tantas condiciones)...:
if (condición1)
//código a procesar si cumple la condición1
else if(condición2)
//código a procesar si cumple la condición2
else if(condición3)
//código a procesar si cumple la condición
....
else
//código a procesar si NO cumple ninguna de las condiciones anteriores


La otra instrucción condicional es SWITCH CASE (equivalente al SELECT CASE de VBA), con sintaxis:
switch (expresión a evaluar) {
case case1:
statements1
[break;]
case case2:
statements2
[break;]
...
default
: default statements
[break;]
}

Un 'pequeño problema' (hasta donde he podido analizar) de SWITCH es que no admite operadores de comparación como < o > :'(
En estos casos mejor emplear IF ELSE
... o bien aplicar un truco 'booleano'.
Veamoslo en el siguiente ejemplo:
function main(workbook: ExcelScript.Workbook) {
  let Hoja = workbook.getActiveWorksheet();
  let Edades = Hoja.getRange("A1:A10").getValues() ;
  let texto: string;

  Edades.forEach(edad  => {
    switch (true) {
        case (edad < 18) : 
          texto ="Menor de edad";
          break; 
        case (edad < 30 ): 
          texto = "Joven";
          break;
        case (edad < 60): 
          texto = "Maduro" ;
          break;
        default :
          texto="Senior";
          break;     }
    console.log(texto);
  });
}

La lógica inicial hubiera sido:
Edades.forEach(edad => {
switch (edad) {
case ( < 18) :
texto ="Menor de edad";
break;
case ( < 30 ):
texto = "Joven";
break;
case ( < 60):
texto = "Maduro" ;
break;
default :
texto="Senior";
break; }
console.log(texto);
});

pero esta construcción genera error y no ejecuta correctamente el proceso.

Continuaremos con Office Scripts en siguientes artículos...

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.