Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

145
Vistas
¿Cómo cargar rangos con nombre en una matriz?

He definido un par de rangos con nombre en mi hoja siguiendo el esquema de nomenclatura fieldName1, fieldName2, fieldName3, etc. Están ubicados en diferentes lugares de mi hoja.

Estoy tratando de cargar esos nombres de campo en una matriz ahora, pero encuentro un problema, ya que getRange("fieldName1").getValue() espera una " String " de fieldName en lugar de getRange(fieldName[c]).getValue() .

Esto es lo que tengo hasta ahora:

 const noFields = wsS.getRange("noFields").getValue() var fieldName = [] for (var c = 1; c <= noFields; ++c) { fieldName[c] = wsS.getRange(fieldName[c]).getValue() }

noFields es una variable de cuántos rangos con nombre fieldNameX tengo que cargar, ya que no pensé en una mejor manera de cargarlos todavía.

Por favor ayuda, gracias.

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Por lo tanto, desea todos los rangos con nombre que comienzan con "fieldName" y desea obtener todos sus valores como una matriz.

Puede obtener todos los rangos con nombre de la hoja de cálculo usando .getActive(). Sin embargo, no se ordenarán como se esperaba.

Si simplemente desea una matriz con todos los valores de los rangos con nombre, haga lo siguiente:

 var ss = SpreadsheetApp.getActive() var values = ss.getNamedRanges() .map(namedRange => namedRange.getRange().getValue())

Si solo desea que los valores de esos rangos sigan el esquema de nombres, haga lo siguiente:

 const PREFIX = "fieldName" // case sensitive var values = ss.getNamedRanges() .filter(namedRange => namedRange.getName().startsWith(PREFIX)) .map(namedRange => namedRange.getRange().getValue())

También es posible que desee ordenar los rangos con nombre por el número después de "fieldName", en caso de que se hayan ingresado en un orden diferente, ¿verdad? Pero eso complica un poco las cosas ya que los nombres son cadenas.

Una forma de ordenar la matriz es construir una matriz asociativa con los nombres de los rangos:

 const PREFIX = "fieldName" // case sensitive var ss = SpreadsheetApp.getActive() var namedRanges = ss.getNamedRanges() .filter(namedRange => namedRange.getName().startsWith(PREFIX)) var associativeArray = [] for (var namedRange of namedRanges) { associativeArray[namedRange.getName().substring(PREFIX.length)] = namedRange.getRange().getValue() } var values = associativeArray.flat()

O con un comparador personalizado:

 const PREFIX = "fieldName" // case sensitive var ss = SpreadsheetApp.getActive() var values = ss.getNamedRanges() .filter(namedRange => namedRange.getName().startsWith(PREFIX)) .map(namedRange => [ Number(namedRange.getName().substring(PREFIX.length)), namedRange.getRange().getValue() ]) .sort((itemA,itemB) => itemA[0] - itemB[0]) .map(item => item[1])

En cualquier caso, terminará con una matriz de valores que puede usar.

about 4 years ago · Santiago Trujillo Denunciar

0

Obtenga todos los rangos con nombre en una matriz

 SpreadsheetApp.getActive().getNamedRanges();

Rangos con nombre de clase

 function namedRangesInAnArray() { const ss = SpreadsheetApp.getActive(); const names = ['r1','r2'.....];//array of names to get return SpreadsheetApp.getActive().getNamedRanges().filter(r => ~names.indexOf(r.getName())); }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda