我試圖添加到一個公開可用的腳本中以賦予它更多功能,但我不斷收到“無效引數:地址”錯誤。
原始腳本,它做它所宣傳的:
/**
* Get Distance between 2 different addresses.
* @param start_address Address as string Ex. "300 N LaSalles St, Chicago, IL"
* @param end_address Address as string Ex. "900 N LaSalles St, Chicago, IL"
* @param return_type Return type as string Ex. "miles" or "kilometers" or "minutes" or "hours"
* @customfunction
*/
function GOOGLEMAPS(start_address,end_address,return_type) {
// https://www.chicagocomputerclasses.com/
// Nov 2017
// improvements needed
var mapObj = Maps.newDirectionFinder();
mapObj.setOrigin(start_address);
mapObj.setDestination(end_address);
var directions = mapObj.getDirections();
var getTheLeg = directions["routes"][0]["legs"][0];
var meters = getTheLeg["distance"]["value"];
switch(return_type){
case "miles":
return meters * 0.000621371;
break;
case "minutes":
// get duration in seconds
var duration = getTheLeg["duration"]["value"];
//convert to minutes and return
return duration / 60;
break;
case "hours":
// get duration in seconds
var duration = getTheLeg["duration"]["value"];
//convert to hours and return
return duration / 60 / 60;
break;
case "kilometers":
return meters / 1000;
break;
default:
return "Error: Wrong Unit Type";
}
}
我的調整版本,它只是添加最多 4 個航點的引數,然后將它們添加到用于獲取方向的 mapObj 變數中。
function GOOGLEMAPS(start_address,end_address, return_type, waypoint1, waypoint2, waypoint3, waypoint4) {
// https://www.chicagocomputerclasses.com/
// Nov 2017
// improvements needed
var mapObj = Maps.newDirectionFinder();
mapObj.setOrigin(start_address);
mapObj.setDestination(end_address);
if(waypoint1 !== null ){mapObj.addWaypoint(waypoint1);}
if(waypoint2 !== null ){mapObj.addWaypoint(waypoint2);}
if(waypoint3 !== null ){mapObj.addWaypoint(waypoint3);}
if(waypoint4 !== null ){mapObj.addWaypoint(waypoint4);}
var directions = mapObj.getDirections();
var getTheLeg = directions["routes"][0]["legs"][0];
var meters = getTheLeg["distance"]["value"];
switch(return_type){
case "miles":
return meters * 0.000621371;
break;
case "minutes":
// get duration in seconds
var duration = getTheLeg["duration"]["value"];
//convert to minutes and return
return duration / 60;
break;
case "hours":
// get duration in seconds
var duration = getTheLeg["duration"]["value"];
//convert to hours and return
return duration / 60 / 60;
break;
case "kilometers":
return meters / 1000;
break;
default:
return "Error: Wrong Unit Type";
}
}
給出錯誤的那一行是這個添加的。if 子句是我嘗試使引數可選的,因為我將在不同長度的航點串列上使用它。
if(waypoint1 !== null ){mapObj.addWaypoint(waypoint1);}
uj5u.com熱心網友回復:
例如,在您的腳本中,當 的值waypoint1未作為 的引數給出時GOOGLEMAPS,該值變為undefined。在這種情況下,waypoint1 !== null是true。我認為這可能是您的問題的原因,invalid argument: address因為在這種情況下,mapObj.addWaypoint(waypoint1)是使用undefined.
如果你想mapObj.addWaypoint(waypoint1)在waypoint1有值的時候運行,下面的修改怎么樣?
從:
if(waypoint1 !== null ){mapObj.addWaypoint(waypoint1);}
if(waypoint2 !== null ){mapObj.addWaypoint(waypoint2);}
if(waypoint3 !== null ){mapObj.addWaypoint(waypoint3);}
if(waypoint4 !== null ){mapObj.addWaypoint(waypoint4);}
到:
if (waypoint1 !== undefined) { mapObj.addWaypoint(waypoint1); }
if (waypoint2 !== undefined) { mapObj.addWaypoint(waypoint2); }
if (waypoint3 !== undefined) { mapObj.addWaypoint(waypoint3); }
if (waypoint4 !== undefined) { mapObj.addWaypoint(waypoint4); }
或者
if (waypoint1) { mapObj.addWaypoint(waypoint1); }
if (waypoint2) { mapObj.addWaypoint(waypoint2); }
if (waypoint3) { mapObj.addWaypoint(waypoint3); }
if (waypoint4) { mapObj.addWaypoint(waypoint4); }
參考:
- 空值
- 不明確的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/391002.html
