Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

146
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda