如何在Google Apps Script中处理谷歌地图地理编码API的JSON响应并获取经纬度
解决Google Maps地理编码API在Apps Script中获取经纬度的问题
首先修正你代码里的两个关键错误:
- 拼接URL时,你把字符串
"address"直接拼进去了,应该用传入的参数address,并且需要用encodeURIComponent()对地址进行URL编码,避免特殊字符导致请求失败。 YOUR_API_KEY需要替换成你自己的Google Maps API密钥。
然后处理JSON响应的步骤如下:
修正后的完整代码:
function geocode(address) { var options = { muteHttpExceptions: true, contentType: "application/json", }; // 修正URL:使用变量address并编码,替换为你的API密钥 var encodedAddress = encodeURIComponent(address); var serviceUrl = "https://maps.googleapis.com/maps/api/geocode/json?address=" + encodedAddress + "&key=你的API密钥"; var response = UrlFetchApp.fetch(serviceUrl, options); if (response.getResponseCode() == 200) { // 解析JSON响应 var jsonResponse = JSON.parse(response.getContentText()); // 检查API返回的状态是否为OK if (jsonResponse.status === "OK") { // 获取第一个结果的经纬度 var location = jsonResponse.results[0].geometry.location; var latitude = location.lat; var longitude = location.lng; // 可以返回经纬度,或者做其他处理 return {lat: latitude, lng: longitude}; } else { // 处理API返回的错误状态,比如ZERO_RESULTS、INVALID_REQUEST等 Logger.log("地理编码失败,状态:" + jsonResponse.status); return null; } } else { Logger.log("请求失败,响应码:" + response.getResponseCode()); return null; } }
关键步骤说明:
JSON.parse(response.getContentText()):把API返回的文本格式响应转换成JavaScript对象,方便访问里面的字段。- 先判断
jsonResponse.status是否为"OK":这是地理编码API的标准状态码,只有状态为OK时,results数组里才会有有效数据。 - 从
results[0].geometry.location中提取lat(纬度)和lng(经度):API会返回多个匹配结果(如果有的话),通常取第一个结果即可。
使用示例:
调用函数时传入具体地址,比如:
var coords = geocode("北京市朝阳区建国门外大街"); if (coords) { Logger.log("纬度:" + coords.lat + ",经度:" + coords.lng); }
内容的提问来源于stack exchange,提问作者DDW
相关产品推荐
相关产品推荐

