我想以英里為單位更改我的距離,以小時格式更改持續時間。現在距離以公里為單位,持續時間以分鐘為單位,所以我想更改代碼以更改格式,即如果持續時間超過 1 小時,那么它將像 1 小時 20 分鐘,距離以英里為單位,即 10 英里,但我是卡住。
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];
}
uj5u.com熱心網友回復:
一個猜想。取而代之的是:
var distance = distance/1000
var timeMin = time/60
嘗試這個:
var distance = distance/1000 * .62;
var timeMin = time/60/60;
或者(得到1.23而不是1.23456789...):
var distance = Math.round(distance/1000 * .62 * 100)/100;
var timeMin = Math.round(time/60/60 * 100)/100;
要從秒中獲取 'XX h YY m' 符號:
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
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
它給出了一些不同的結果,因為它沒有正確舍入分鐘:350 秒 -> 5 分鐘 50 秒 -> 5 分鐘(不是 6 分鐘)。
日期和時間是棘手的野獸。我什至不確定我的最后一個例子對所有時區是否 100% 可靠。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/369223.html
上一篇:列出上個月的日期
