jueves, 3 de junio de 2021

Rangos con nombre (intervalos con nombre) "GetRangeByName"

 Como ya explique en un artículo antiguo (Referencias a pestañas y/o celdas en código) es muy interesante utilizar los intervalos con nombre creándolos en la hoja de cálculo y referenciándolos en el código con .getRangeByName()

Como comenté en dicho artículo, la ventaja más evidente es que, aunque el usuario cambie el nombre de la pestaña o el lugar de una celda, el código sigue apuntando a donde le hemos dicho que apunte.

Para dejar más claro el problema: 

Si utilizo en el código 

var pestana = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('configuración')

corro el peligro que deje de funcionar si alguien cambia el nombre de pestaña, un peligro que se escapa de nuestras manos

Peor aún, si utilizo en el código esta referencia:

var resultado = pestana.getRange('B2').getValue()

Dejará de funcionar en cuanto añadamos alguna columna o fila antes de la B o de la fila 2

Para evitar todo esto, la solución es crear intervalos con nombre en la hoja de cálculo  y referenciarlos tal que así:

var pestana= SpreadsheetApp.getActiveSpreadsheet().getRangeByName('configuración')

var resultado = pestana.getRangeByName('el_de_la_celda_B2')

 

Pero... Nos hemos encontrado con una buena noticia y una mala en relación a estos rangos con nombre:

  • La buena: Cuando copiamos una pestaña en otra hoja de cálculo ("Copiar en" de la pestaña), los intervalos con nombre también se copian.. pero con un nombre mezcla de la pestaña y el nombre antiguo.
  • La mala: El código de referencia a estos rangos con nombre a veces no funciona, no encuentra dicho intervalo con nombre. La cuestión es que a veces funciona y a veces no. Y la única solución que he encontrado es borrar dicho intervalo y volverlo a crear.

No hay comentarios:

Publicar un comentario

Crear PDF horizontal

El código que vamos a mostrar aquí no ha sido creado por nosotros, sino que lo hemos encontrado en Internet. Objetivo: Publicar una pesta...