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

190
Vistas
Script de Google Apps: bucle para actualizar varios rangos con nombre según la tabla de referencia

En primer lugar, me doy cuenta de que hay formas de hacer esto sin usar rangos con nombre y scripts. Lamentablemente, los rangos importados de Google Docs no están de acuerdo, por lo que necesito encontrar una manera de hacer que esto funcione.

Creo que ya casi termino con este script, pero me falta el conocimiento de codificación incluso para los bucles básicos en GAS. Destaqué la sección relacionada de la hoja de cálculo en azul que está relacionada con el script y compartí un ejemplo en este enlace :

En la edición de una celda en particular, me gustaría que sucediera lo siguiente:

  • Obtenga una lista de rangos con nombre de un rango de celdas en una hoja de cálculo en particular
  • Actualice los rangos para esos rangos con nombre de un rango de celdas adyacente en la misma hoja de cálculo

Entiendo el concepto de usar setNamedRange() uno por uno pero no en un ciclo basado en rangos de hojas de cálculo. Me gustaría que esto sea expandible, para que pueda expandir fácilmente la cantidad de rangos que puedo actualizar con este script.

 function updateRanges() { var ss = SpreadsheetApp.getActive(); //range1 var updateRangeName = ss.getRange("B14").getValue(); var updateRangeValue = ss.getRange("C14").getValue(); ss.setNamedRange(updateRangeName,ss.getRange(updateRangeValue)); //range2 var updateRangeName = ss.getRange("B15").getValue(); var updateRangeValue = ss.getRange("C15").getValue(); ss.setNamedRange(updateRangeName,ss.getRange(updateRangeValue)); //range3 var updateRangeName = ss.getRange("B16").getValue(); var updateRangeValue = ss.getRange("C16").getValue(); ss.setNamedRange(updateRangeName,ss.getRange(updateRangeValue)); //range4 var updateRangeName = ss.getRange("B17").getValue(); var updateRangeValue = ss.getRange("C17").getValue(); ss.setNamedRange(updateRangeName,ss.getRange(updateRangeValue)); //range5 var updateRangeName = ss.getRange("B18").getValue(); var updateRangeValue = ss.getRange("C18").getValue(); ss.setNamedRange(updateRangeName,ss.getRange(updateRangeValue)); } // function onEdit(e) { if (e.range.getA1Notation() === 'C2') updateRanges(); }

Actualización 1

¡Encontré una solución funcional gracias a Yuri! Aquí está mi código final. También agregué un ajuste para que el activador onEdit esté vinculado a una hoja específica.

 function updateRanges() { var ss = SpreadsheetApp.getActive(); sheet = ss.getSheetByName("Template") var ranges = sheet.getRange('B14:C18').getValues(); for (var r in ranges) { var updateRangeName = ranges[r][0]; var updateRangeValue = ranges[r][1]; ss.setNamedRange(updateRangeName,ss.getRange(updateRangeValue)); } } function onEdit(e) { if (e.range.getSheet().getName() != "onEditSheet") { return } if (e.range.getA1Notation() === 'B1') updateRanges(); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¿Algo como esto?

 function updateRanges() { var ss = SpreadsheetApp.getActiveSheet(); var ranges = ss.getRange('B14:C18').getValues(); for (var r in ranges) { var updateRangeName = ranges[r][0]; var updateRangeValue = ranges[r][1]; ss.setNamedRange(updateRangeName,ss.getRange(updateRangeValue)); } } function onEdit(e) { if (e.range.getA1Notation() === 'C2') updateRanges(); }
about 4 years ago · Juan Pablo Isaza 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