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

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

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 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