Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 如何获取地址的纬度和经度?_Google Sheets_Geocoding - Fatal编程技术网

Google sheets 如何获取地址的纬度和经度?

Google sheets 如何获取地址的纬度和经度?,google-sheets,geocoding,Google Sheets,Geocoding,我目前正在处理一个数据列表,其中一列数据是该列表的地址。我计划在谷歌地图上绘制我的每个地址,但我希望避免手动将地址粘贴到谷歌中以获取参数。我需要经度,纬度。我的Excel表格(或者我在谷歌文档电子表格中的表格)包含大约500个地址 所以我希望有办法自动完成这项工作?你可以在谷歌电子表格中添加一点谷歌应用程序脚本,这样它就能帮你完成这项工作。演示(添加地址,它将为您进行地理编码)。 并在代码下方执行地理编码: function getLatLong(adress) { try{ if(

我目前正在处理一个数据列表,其中一列数据是该列表的地址。我计划在谷歌地图上绘制我的每个地址,但我希望避免手动将地址粘贴到谷歌中以获取参数。我需要经度,纬度。我的Excel表格(或者我在谷歌文档电子表格中的表格)包含大约500个地址


所以我希望有办法自动完成这项工作?

你可以在谷歌电子表格中添加一点谷歌应用程序脚本,这样它就能帮你完成这项工作。演示(添加地址,它将为您进行地理编码)。
并在代码下方执行地理编码:

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)给我们打电话