Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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 maps api 3 基于谷歌电子表格中的地名和城市检索位置地址_Google Maps Api 3_Google Apps Script_Google Sheets - Fatal编程技术网

Google maps api 3 基于谷歌电子表格中的地名和城市检索位置地址

Google maps api 3 基于谷歌电子表格中的地名和城市检索位置地址,google-maps-api-3,google-apps-script,google-sheets,Google Maps Api 3,Google Apps Script,Google Sheets,我想根据谷歌表单中的名称和地址检索一个地方的位置,比如: =PlaceAddress("White House, Washington, DC") =PlaceAddress("Moma, New York, NY") =PlaceAddress("Google, Mountain View, CA") 当结果(分别)出现在谷歌搜索中时,将返回结果,即: 华盛顿特区宾夕法尼亚大道西北1600号,邮编20500 纽约州纽约市西53街11

我想根据谷歌表单中的名称和地址检索一个地方的位置,比如:

=PlaceAddress("White House, Washington, DC")
=PlaceAddress("Moma, New York, NY")
=PlaceAddress("Google, Mountain View, CA")
当结果(分别)出现在谷歌搜索中时,将返回结果,即:

华盛顿特区宾夕法尼亚大道西北1600号,邮编20500

纽约州纽约市西53街11号,邮编10019

加利福尼亚州山景城Pkwy圆形剧场1600号,邮编94043

地图应用程序脚本服务有一个地理编码器,但这似乎需要地址,而不是地名。我猜解决方案可能涉及到我从应用程序脚本中错过的一些功能,或者类似于从谷歌搜索或其他服务获取结构化数据的
ImportData
功能。设置此选项:

B1=白宫

B2=华盛顿

B3=直流电

A1:A3可以是地点、城市、州

在任意单元格中输入用户定义的公式,如下所示:

=mapAddress(B1, B2, B3)
在文本编辑器中,复制并粘贴:

函数映射地址(地点、城市、州){
var API_KEY='yourapikeyhere';
var url='1〕https://maps.googleapis.com/maps/api/place/textsearch/json?query=' +
地点+''+城市+''+州+''和键='+API_键;
var response=UrlFetchApp.fetch(url);
var json=response.getContentText();
obj=JSON.parse(JSON);
addr=obj.results[0]。格式化的地址;
返回地址;
}

Places API每天有1000个请求,但通过验证您的身份(仍然是免费的),这可以增加到每天150k请求。

您可以使用一个名为。安装附加组件后,您可以在Google电子表格中使用以下功能:

=GEO_ADDRESS("White House, Washington, DC")
将返回格式如下的地址:

White House, 600 17th St NW, Washington, District of Columbia 20006, United States

如果只想提取部分地址,如城市、地区、邮政编码、国家或地理编码坐标,请选中。使用
=GEO_map
功能也可以很容易地在地图上绘制这些位置。

您也可以使用Google Places API来代替。上面的代码只需要稍微调整一下:

function mapAddress(address) {
  var API_KEY = 'yourapikeyhere';
  var url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + address + '&lang=en&key=' + API_KEY;
  var response = UrlFetchApp.fetch(url);
  var json = response.getContentText();
  obj = JSON.parse(json);
  addr = obj.results[0].formatted_address;
  return addr;
}

谢谢,这对白宫来说确实有效,但我似乎选择了一个太特别的例子,因为它对其他地名无效。例如,搜索MOMA NY(详细说明)仅给出纽约州纽约市(无地址):我已经澄清了我的问题,要求覆盖本案。请尝试MOMA或未详细说明的MOMA。您还需要城市和/或州。这将返回地址。我明白了,确实API看起来相当挑剔,比谷歌搜索更挑剔。这种方法仍然不适用于其他地址,如谷歌山景CA,所以我再次澄清。也许这是谷歌地图的局限性,所以我想知道其他API是否更适合@马克斯·盖尼斯。我想我可能找到了你要找的东西。googleplacesapi。我已经更改了上面代码中的URL以使用它。它确实需要一个API密钥(Google放置API Web服务)。它是免费的。它返回上面列出的确切地址。。我希望这对你有效。似乎不再有效。提供格式化的_地址错误。