如何修改Google Sheets脚本 将距离转为英里、时长转为时分格式
实现单位转换与格式优化的修改方案
核心修改逻辑
- 距离单位转换:利用1公里=0.621371英里的转换系数,将接口返回的米数先转换为公里再换算为英里,保留1位小数后拼接「英里」单位
- 时长格式优化:直接基于接口返回的总秒数拆分计算小时与剩余分钟,不足1小时仅显示分钟,超过1小时则显示「X小时Y分钟」格式
修改后完整代码
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; } // 以下为修改部分 // 公里转英里,保留1位小数 const distanceInMile = (distance / 1000 * 0.621371).toFixed(1) + '英里'; // 计算时分格式 const hours = Math.floor(time / 3600); const minutes = Math.floor((time % 3600) / 60); const formattedTime = hours > 0 ? `${hours}小时${minutes}分钟` : `${minutes}分钟`; return [distanceInMile, formattedTime]; }
内容的提问来源于stack exchange,提问作者Yameen Bhutta
相关产品推荐
相关产品推荐

