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

146
Visualizações
Problemas para cambiar la distancia a millas y la duración en horas

Quiero cambiar mi distancia en Millas y duración en formato de horas. Ahora la distancia está en kilómetros y la duración en minutos, así que quiero cambiar el código para cambiar el formato, es decir, si la duración es más de 1 hora, será como 1 hora y 20 minutos y la distancia en millas, es decir, 10 millas, pero estoy atascado.

 function onOpen() { var ui = SpreadsheetApp.getUi(); // Or DocumentApp or FormApp. ui.createMenu('Custom Menu') .addItem('Fetch Distance and Time', 'mainFun') .addToUi(); } function mainFun() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var data = sheet.getRange(2, 1, sheet.getLastRow()-1, 8).getValues(); Logger.log(data.length); for(var i=0; i<data.length;i++){ var startPoint = data[i][1]; var endPoint = data[i][7]; if(startPoint && endPoint){ var wayPoints = []; for(var j=2;j<=6;j++){ if(data[i][j]){ wayPoints.push(data[i][j]) } } var disMin = mapApiEndPoints(startPoint,endPoint,wayPoints) Logger.log(disMin) sheet.getRange(i+2, 9, 1, 2).setValues([disMin]) } } } function mapApiEndPoints(startPoint,endPoint,wayPoints){ var directions = Maps.newDirectionFinder().setOrigin(startPoint).setDestination(endPoint); for (var i=0; i<wayPoints.length; i++) { directions.addWaypoint(wayPoints[i]); } var res = directions.getDirections(); var time = 0; var distance = 0; for(var j=0; j<res.routes[0].legs.length; j++ ){ var route = res.routes[0].legs[j]; //Logger.log(route) time = time + route.duration.value; distance = distance + route.distance.value; } var distance = distance/1000 var timeMin = time/60 return [distance,timeMin]; }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Una adivinanza. En lugar de esto:

 var distance = distance/1000 var timeMin = time/60

Prueba esto:

 var distance = distance/1000 * .62; var timeMin = time/60/60;

O (para obtener 1.23 en lugar de 1.23456789... ):

 var distance = Math.round(distance/1000 * .62 * 100)/100; var timeMin = Math.round(time/60/60 * 100)/100;

Para obtener la notación 'XX h YY m' a partir de segundos:

 var s = 12345; // time in seconds var h = Math.floor(s/3600); var m = ('' + Math.round(s/60 % 60)).padStart(2, '0'); var time = (h > 0) ? h + ' h ' + m + ' min' : m + ' min'; console.log(time) // output: 3 h 26 min

Otro enfoque con el objeto Date() :

 var s = 12345; var date = new Date(s*1000); var timezone = date.getTimezoneOffset(); var h = date.getHours() + timezone/60; // exclude timezone offset var m = date.getMinutes(); var time = (h>0) ? h + ' h ' + m + ' min' : m + ' min' console.log(time); // output: 3 h 25 min

Da resultados un poco diferentes porque no redondea los minutos correctamente: 350 segundos -> 5 minutos 50 segundos -> 5 minutos (no 6 minutos).

Las fechas y la hora son bestias engañosas. Ni siquiera estoy seguro de que mi último ejemplo sea 100% confiable para todas las zonas horarias.

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