在Google电子表格

时间:2015-12-31 18:04:39

标签: google-maps-api-3 google-apps-script google-sheets

我想根据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搜索或其他服务获取结构化数据。

4 个答案:

答案 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

这也适用于单元格引用。