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!!
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':
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:
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 ;-)
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.