jueves, 26 de mayo de 2022

Office Scripts: Verificaciones previas

Un buen consejo hablando en cualquier entorno de programación es el de validar la existencia de aquellos objetos sobre los que vamos a trabajar, y Office Scripts no es una excepción...
Hoy veremos algún truco que nos puede ayudar a validar si cierto objeto está presente en nuestro entorno de trabajo.

El primer truco consiste en emplear el operador ? el cual comprueba si el objeto existe antes de llamar a un método o propiedad en concreto...
Veamos un ejemplo sencillo.

Supongamos queremos recuperar un dato de la hoja 'Resumen' de nuestro libro de trabajo...
pero que dicha hoja NO EXISTE!!
function main(workbook: ExcelScript.Workbook) 
{
  // queremos trabajar sobre una hoja llamada 'Resumen'
  //que en realidad NO existe
  let hoja = workbook.getWorksheet('Resumen');
  let myRango = hoja?.getRange("A1");
   
  console.log (myRango?.getValue());
}

Al lanzar nuestro scripts con el operador:
let myRango = hoja?.getRange("A1");
fíjate que lo usamos sobre el objeto ('hoja' en mi ejemplo), antes de usar el método .getRange, y también sobre el objeto rango ...
Si hubieramos omitido uno u otro, al no existir la hoja 'Resumen' nos aparecería un mensaje de error:
Cannot read properties of undefined (reading 'getRange')

Una alternativa consistiría en el uso de condicionales, y operadores de comparación y negación (revisa este artículo).
En el siguiente código aplicamos una estructura if... then... else para comprobar si existe la hoja 'Resumen':
function main(workbook: ExcelScript.Workbook)
{
  let hoja = workbook.getWorksheet('Resumen');
  if (hoja) {
    let range = hoja.getRange("A1");
        } 
  else {
    console.log("La hoja 'Resumen' no existe.");
        }
}

donde basicamente decimos que si 'hoja' es verdadero, i.e., existe el objeto, entonces seguimos trabajando sobre la celda A1, y en caso contrario, saltará un mensaje en la consola...

Podríamos elaborar un poco mas el proceso, creando dos funciones:
function main(workbook: ExcelScript.Workbook) {
  let hoja = workbook.getWorksheet('Resumen');
 
  // comprueba si true o false con la función check_hoja
  if (!check_hoja(hoja ) ) 
  {
    console.log('Sabemos que la hoja no existe');}
  else {
    let nombreHoja=hoja.getName();
    console.log('Sabemos que la hoja ' + nombreHoja +' SÍ existe');
    let sel=hoja.activate();
}}
//////////////////////////////////////////////////////
function check_hoja(shResumen: ExcelScript.Worksheet): boolean {
   // Check si existe la hoja cargada como parametro
  if (!shResumen) {
    console.log(`No existe la hoja, comprueba qué pasa...`);
    return false; //devolvemos como resultado de la función false
    // y finaliza la función
  }
  // si ha continuado es que la hoja existe
  // y por tanto devuelve true
  return true;
}

OJO con la prueba lógica de la función principal... donde empleo una condición inversa.

En un próximo artículo analizaremos alguna alternativa para controlar posibles errores ;-)

No hay comentarios:

Publicar un comentario

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