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

291
Vistas
¿Cómo hago un bucle para agregar el mes a cada fecha hasta que se cumpla la condición? secuencia de comandos de aplicaciones de Google

¿Cómo hago un bucle para agregar el mes a cada fecha hasta que se cumpla la condición?

Explicación: quiero agregar 3 meses a cada fecha cada vez hasta que la columna anual (columna D) sea mayor que la fecha de hoy (columna E).

ingrese la descripción de la imagen aquí

Ejemplo: si tomamos la primera línea de la columna Anual "01/02/2021" y agregamos los primeros 3 meses, los resultados serán el 01/05/2021, luego agregamos la segunda vez 3 meses 01/08/2021 ..etc hasta que sea el 05/01/2022 (mayor que la fecha de hoy).

En la columna "H" he escrito los resultados que quiero, pero lo que tengo está en la columna "F" de Red.

Aquí está mi código:

 function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); for (var i = 2; i < 12; i++) { var today_date = ss.getRange(i, 5).getValue(); var today_date_format = Utilities.formatDate(new Date(today_date), "Europe/Paris", 'MMMM dd, yyyy 12:00:00 Z'); var Date_2021 = ss.getRange(i, 4).getValue(); var Date_2021_Format = Utilities.formatDate(new Date(Date_2021), "Europe/Paris", 'MMMM dd, yyyy 12:00:00 Z'); var Date_2021_constructed = new Date(Date_2021_Format); var a3date = Date_2021_constructed.getMonth(); Date_2021_constructed.setMonth((a3date + 3) % 12); do { Date_2021_constructed = Date_2021_constructed.setMonth((a3date + 3) % 12); } while (Date_2021_constructed > today_date_format); ss.getRange(i, 6).setValue(Date_2021_constructed) } }

Aquí está la pantalla de mis datos:

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Gracias por el ejemplo y la imagen que ayuda mucho:

Voy a sugerir una solución rápida y ver si funciona. Parece que puede estar publicando el valor de la fecha en milisegundos en la columna f. Así que prueba esto:

ss.getRange(i, 6).setValue(new Date(Date_2021_constructed)).setNumberFormat("dd/MM/yyyy");

Si esto no funciona, lo miraré más de cerca y sería útil tener una tabla de valores de su hoja de cálculo para poder probar.

Si la solución anterior no funciona, intente esto:

 function myFunction() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName('Sheet1'); const vs = sh.getRange(2,1,sh.getLastRow() - 1,5).getValues(); vs.forEach((r,i) => { let td = new Date(r[4]); let tdv = td.valueOf(); let ad = new Date(r[3]); let m = r[2]; let n = 1; do{ var fd = new Date(ad.getFullYear(),ad.getMonth() + (n++ * m), ad.getDate()); var fdv = fd.valueOf(); }while(fdv<tdv); sh.getRange(i + 2,6).setValue(fd).setNumberFormat("dd/MM/yyyy"); }); }
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