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

207
Vistas
Apps Script: ¿Cómo limitar el alcance de un FOR LOOP?

El siguiente script se ejecuta cada vez que se edita cualquier celda en la columna E (por lo tanto, matriz [4] ). Y su único propósito es agregar información adicional a las siguientes celdas vacías de la fila que se ha editado. Pero en lugar de simplemente agregar esta información a las siguientes celdas que están vacías en la misma fila, mi secuencia de comandos está restableciendo los valores de todas las celdas posteriores, incluso si estas celdas posteriores ya tienen algunos valores en ellas. ¿Puede alguien decirme qué estoy haciendo mal aquí y cómo solucionarlo? Es obvio que estoy haciendo algo mal en mi declaración IF , pero honestamente no tengo idea de qué podría ser :(

Muchas gracias de antemano por vuestra ayuda y consejos!!!


Aquí está el guión:

 function addAdditionalInfo() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getSheetByName('SHEET_ID'); var data = s.getDataRange().getValues(); var data_len = data.length; for (var i = 0; i < data_len; i++) { if (data[i][4] == "COMPLETED") { s.getRange(i + 1, 6).setValue("name"); s.getRange(i + 1, 7).setValue("street"); s.getRange(i + 1, 8).setValue("street number"); s.getRange(i + 1, 9).setValue("zip code"); s.getRange(i + 1, 10).setValue("country"); s.getRange(i + 1, 11).setValue("maternal language"); s.getRange(i + 1, 12).setValue("second language"); s.getRange(i + 1, 13).setValue("-"); } else if (data[i][4] == "APPROVAL") { s.getRange(i + 1, 6).setValue("name of supervisor)"); s.getRange(i + 1, 7).setValue("email of supervisor"); s.getRange(i + 1, 8).setValue("tel of supervisor"); s.getRange(i + 1, 9).setValue("maternal language of supervisor"); s.getRange(i + 1, 10).setValue("second language of supervisor"); s.getRange(i + 1, 11).setValue("assistant of the supervisor"); s.getRange(i + 1, 12).setValue("status of the approval process"); s.getRange(i + 1, 13).setValue("approval due date"); } } }

Y aquí está el disparador:

 // The trigger is any manual change done in Column E, starting at row 3 of that column function onEdit(e) { if ( e.source.getSheetName() == "SHEET_ID" && e.range.columnStart == 5 && e.range.columnEnd == 5 && e.range.rowStart >= 3 && e.range.rowEnd <= 3000 ) { addAdditionalInfo() } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Agregar datos solo a la línea en la que se encuentra limitará el alcance

Tratar de recorrer toda la hoja es una mala idea, ya que este script se maximizará después de 30 segundos.

En mis pruebas, utilicé una validación en la columna 5 usando la lista COMPLETED,APPROVAL

 function onEdit(e) { e.source.toast('entry') const sh = e.range.getSheet(); if (sh.getName() == 'Sheet0' && e.range.columnStart == 5 && e.range.rowStart > 2) { e.source.toast('completed'); if (e.value == "COMPLETED") { sh.getRange(e.range.rowStart, 6, 1, 8).setValues([["name", "street", "street number", "zip code", "country", "maternal language", "second language", "-"]]); } if (e.value == "APPROVAL") { e.source.toast('approval') sh.getRange(e.range.rowStart, 6, 1, 8).setValues([["name of supervisor", "email of supervisor", "tel of supervisor", "maternal language of supervisor", "second language of supervisor", "assistant of the supervisor", "status of the approval process", "approval due date"]]); } } }

Hoja0:

ingrese la descripción de la imagen aquí

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