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

116
Visualizações
Haga coincidir la función con el script de aplicaciones para encontrar la fecha más cercana pero menor que

Tengo una serie de fechas. Tengo una fecha específica "Fecha de búsqueda". Quiero encontrar la fecha en la matriz más cercana pero menor que la Fecha de búsqueda y devolver el índice de esa fecha en la matriz.

Ejemplo: Suponga que la matriz de fechas es [8/1/21, 8/5/22, 8/5/23] , indexado 1,2,3 por ejemplo. Supongamos que mi fecha de búsqueda es 9/17/22 . La función debe encontrar la fecha 8/5/22 y devolver el índice 2 .

En Hojas de cálculo de Google, esta es simplemente la función de coincidencia: ingrese la descripción de la imagen aquí

¿Cómo hago esto (y de manera más eficiente) en Apps Script? La función IndexOf() parece devolver solo una coincidencia exacta, lo que no funciona en este caso.

¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Explicación:

La idea sería comparar cada fecha de la matriz con la fecha de búsqueda y seleccionar la diferencia mínima absoluta que será la fecha más cercana a la fecha de búsqueda:

 const checkDif = checkDates.map(d=>searchDate - d).filter(v=>v>0); const minIndex = checkDif.indexOf(Math.min(...checkDif))+1;
  • map se usa para calcular la diferencia entre las fechas para cada fecha en la matriz de entrada.

  • El filtro se utiliza para seleccionar solo las diferencias positivas (es decir, las fechas que son más pequeñas que la fecha de búsqueda).

  • Math.min se usa para calcular el valor mínimo de la matriz de las diferencias positivas, por lo tanto, la fecha más cercana que es menor que la fecha de búsqueda.

  • indexOf se utiliza para calcular el índice de ese valor mínimo.

Hacemos +1 porque los índices de matriz en JavaScript comienzan desde 0 pero parece que desea que comiencen desde 1 .

Solución:

Ver comentarios para mayor explicación y en caso de querer cambiar los rangos o el nombre de la hoja.

 function closestDate() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName("Sheet1"); // name of the sheet const searchDate = sh.getRange("B4").getValue(); // search date const checkDates = sh.getRange("B1:D1").getValues().flat(); // input range const checkDif = checkDates.map(d=>searchDate - d).filter(v=>v>0); const minIndex = checkDif.indexOf(Math.min(...checkDif))+1; console.log(minIndex); // 2 sh.getRange("B5").setValue(minIndex); // return the result to B5 }

Ejemplo que funciona con el fragmento de código:

ingrese la descripción de la imagen aquí

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