我想根据Google表格中的姓名和地址检索地点的位置,例如:
=PlaceAddress("White House, Washington, DC")
=PlaceAddress("Moma, New York, NY")
=PlaceAddress("Google, Mountain View, CA")
会返回结果,因为它们(分别)会出现在Google搜索中,即:
1600 Pennsylvania Ave NW,Washington,DC 20500
11 W 53rd St,New York,NY 10019
1600 Amphitheatre Pkwy,Mountain View,CA 94043
Maps Apps脚本服务有一个地理编码器,但这似乎需要地址,而不是地名。我猜这个解决方案涉及我从Apps脚本中遗漏的一些功能,或类似ImportData
功能,以从Google搜索或其他服务获取结构化数据。
答案 0 :(得分:3)
Google Places API可以执行此操作(请求密钥here)。设置一下:
B1 =白宫
B2 =华盛顿
B3 = DC
A1:A3可以是地方,城市,州
在任何单元格中输入用户定义的公式,如下所示:
<title><?php echo $template['title']; ?></title>
<?php echo $template['metadata']; ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
在文本编辑器中复制并粘贴:
=mapAddress(B1, B2, B3)
Places API每天有limits次1,000个请求,但通过验证您的身份(仍然免费),每天可以增加到150k。
答案 1 :(得分:0)
您可以使用名为GeoSheets的免费插件执行此操作。安装插件后,您可以在Google电子表格中使用以下功能:
=GEO_ADDRESS("White House, Washington, DC")
将返回格式为的地址:
White House, 600 17th St NW, Washington, District of Columbia 20006, United States
如果您只想提取部分地址(例如城市,地区,邮政编码,国家/地理位置或地理编码坐标),请检查docs。使用=GEO_MAP
函数在地图上绘制这些位置也很容易。
答案 2 :(得分:0)
您也可以使用Google Maps Geocoding API代替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;
}
答案 3 :(得分:0)
为了避免使用 Maps API,您可以使用 Maps Geocoder 类:
const GOOGLEMAPS_ADDRESS = (address) => {
const { results: [data = {}] = [] } = Maps.newGeocoder().geocode(address);
return data.formatted_address;
};
然后您可以使用:
=GOOGLEMAPS_ADDRESS("White House")
它会返回:
1600 Pennsylvania Avenue NW, Washington, DC 20500, USA
任何对 Google 地图足够具体的搜索都应该适用于此。
甚至使用:
=GOOGLEMAPS_ADDRESS("MOMA")
返回:
11 W 53rd St, New York, NY 10019, USA
这也适用于单元格引用。