Google sheets 如何获取地址的纬度和经度?
我目前正在处理一个数据列表,其中一列数据是该列表的地址。我计划在谷歌地图上绘制我的每个地址,但我希望避免手动将地址粘贴到谷歌中以获取参数。我需要经度,纬度。我的Excel表格(或者我在谷歌文档电子表格中的表格)包含大约500个地址Google sheets 如何获取地址的纬度和经度?,google-sheets,geocoding,Google Sheets,Geocoding,我目前正在处理一个数据列表,其中一列数据是该列表的地址。我计划在谷歌地图上绘制我的每个地址,但我希望避免手动将地址粘贴到谷歌中以获取参数。我需要经度,纬度。我的Excel表格(或者我在谷歌文档电子表格中的表格)包含大约500个地址 所以我希望有办法自动完成这项工作?你可以在谷歌电子表格中添加一点谷歌应用程序脚本,这样它就能帮你完成这项工作。演示(添加地址,它将为您进行地理编码)。 并在代码下方执行地理编码: function getLatLong(adress) { try{ if(
所以我希望有办法自动完成这项工作?你可以在谷歌电子表格中添加一点谷歌应用程序脚本,这样它就能帮你完成这项工作。演示(添加地址,它将为您进行地理编码)。
并在代码下方执行地理编码:
function getLatLong(adress) {
try{
if(adress=="")return("");
var geo = Maps.newGeocoder().geocode(adress);
if(geo.status=="OK"){
var lng = geo.results[0].geometry.viewport.southwest.lng;
var lat = geo.results[0].geometry.viewport.southwest.lat;
return([lat,lng]);
}
else{
return("error");
}
}
catch(err){
return(err);
}
}
提供美国和国际地址的地理编码。它非常容易使用-将您的列表粘贴到他们的web工具中,它会在几秒钟内返回纬度和经度。还有其他服务可以以类似的方式返回lat/long数据;我最熟悉SmartyStreets,因为我在那里工作
还请记住,将地址粘贴到谷歌地图并不一定能提供准确的信息,因为谷歌不会首先验证地址;SmartyStreets可以,这可以确保您获得的是真实位置的数据,而不是谷歌的最佳猜测
您可能想查看的其他解决方案:,或其他“国际地址地理编码”提供商(快速的谷歌搜索将提供一些不错的选择)。这篇精彩的文章提供了帮助
函数GoogleGeocode(地址为字符串)为字符串
她穿得像绳子
作为字符串的Dim strQuery
像字符串一样暗的字符串
像弦一样的暗弦
strAddress=URLEncode(地址)
'组装查询字符串
strQuery=”http://maps.googleapis.com/maps/api/geocode/xml?"
strQuery=strQuery&“address=”&strAddress
strQuery=strQuery&“&sensor=false”
'定义XML和HTTP组件
Dim googleResult作为新的MSXML2.DOMDocument
Dim googleService作为新的MSXML2.XMLHTTP
作为MSXML2.IXMLDOMNodeList的Dim oNodes
Dim oNode作为MSXML2.IXMLDOMNode
'创建查询URL的HTTP请求-确保
'同步操作的最后一个“False”
谷歌服务。打开“获取”,strQuery,False
googleService.send
googleResult.LoadXML(googleService.responseText)
Set oNodes=googleResult.getElementsByTagName(“几何体”)
如果oNodes.Length=1,则
对于oNodes中的每个oNode
strLatitude=oNode.ChildNodes(0).ChildNodes(0).Text
strlongitute=oNode.ChildNodes(0).ChildNodes(1).Text
谷歌地理编码=标准纬度&“,”和标准长度
下一个oNode
其他的
GoogleGeocode=“未找到(请重试,您可能做得太多太快)”
如果结束
端函数
公共函数URLEncode(StringVal作为字符串,可选SpaceAsPlus作为Boolean=False)作为字符串
与长度相同的尺寸字符串长度:StringLen=Len(StringVal)
如果StringLen>0,则
重拨结果(StringLen)为字符串
长度为Dim i,字符代码为整数
Dim Char作为字符串,空格作为字符串
如果SpaceAsPlus,则空格=“+”否则空格=“%20”
对于i=1到StringLen
Char=Mid$(StringVal,i,1)
CharCode=Asc(Char)
选择大小写字符码
案件97至122、65至90、48至57、45、46、95、126
结果(i)=字符
案例32
结果(i)=空间
案例0至15
结果(i)=%0”和十六进制(字符码)
其他情况
结果(i)=“%”和十六进制(字符码)
结束选择
接下来我
URLEncode=Join(结果为“”)
如果结束
端函数
我建议将数据传输到google电子表格中,并通过Aowesome table插件包含地理代码,而不是注入代码。从那时起,只需将地址放在一列中,然后选择要进行地理编码的地址列如何避免“此Google用户帐户每秒调用的脚本次数过多”此代码出现错误?@AlexKowalczyk FoxyTasks您可以将脚本相互化:您可以让它为整列数据运行,而不是让它为每行运行。(这可以通过从一个将处理所有列的函数向脚本应用循环来完成)@AlexKowalczyk Foxytask这里有一个示例:函数handleAddressList(adress){var results=[];for(adress中的var i){results.push(getLatLong(adress[i][0]);}返回结果;}Smarty street没有响应我创建帐户的请求。你知道它是否仍然有效吗?嘿,OVO-是的,SmartyStreets仍然有效。如果您在设置帐户时遇到问题,可以通过我们的联系人页面(www.smartystreets.com/contact)给我们打电话