0

我是一个非常新手的程序员,所以请温柔。

我要做的是根据从谷歌地图导出的坐标从谷歌地图/地点中提取一个位置 formatted_phone_number 和网站。从谷歌地图导出的 KML 文件只包含位置的名称和纬度和经度。

我指的是Google Places API - Place Details。这是带有我想要获取电话号码和网站的餐厅坐标的表格。然后,此列表将作为 csv 文件导入 Insightly。

我发现这个谷歌表格脚本可以根据地理编码获取地址,它有效:

var geocoder = Maps.newGeocoder(),
    cache = CacheService.getScriptCache();

function reverseGeocodeLatLngTest() {
  Logger.log(reverseGeocodeLatLng(51.70055389, 5.318333149));
}

function reverseGeocodeLatLng(latitude, longitude) {
//  var latitude = 51.69048,
//      longitude = 5.29362,
  var cacheKey = latitude + "+" + longitude,
    cached = cache.get(cacheKey);
  if(cached !== null) {
    return JSON.parse(cached);
  }
  Utilities.sleep(2000);

  var result = geocoder.reverseGeocode(latitude, longitude),
  //First response is the most specific
      response = result.results[0];
  if(response === undefined) {
    return "??";
  }
  function g(fieldName) {
    for (var i = 0; i < response.address_components.length; i++) {
      if(response.address_components[i].types.indexOf(fieldName) != -1) {
        return response.address_components[i];
      }
    }
    return {"long_name": "??"};
  }
  rValue = [[g("route").long_name, g("street_number").long_name, g("postal_code").long_name, g("locality").long_name, g('country').long_name, g('website').long_name]];
  cache.put(cacheKey, JSON.stringify(rValue));
  return rValue;
}

我认为脚本应该与此接近,以获取每个位置的位置详细信息。

谢谢你的帮助。

4

1 回答 1

1

我只是为了这个目的而整理了一些东西——将电话号码添加到我有公司名称和地址的列表中。

您将需要一个 Google API 密钥。它是免费的,只需几分钟即可设置。

希望这可以帮助!

function phoneLookup(place, city, state) {
    var API_KEY = YOUR_API_KEY;
    var url = 'https://maps.googleapis.com/maps/api/place/textsearch/json?query=' +
      place + ' ' + city + ' ' + state + '&key=' + API_KEY;
    var response = UrlFetchApp.fetch(url);
    var json = response.getContentText();
    obj = JSON.parse(json);
    placeId = obj.results[0].place_id;
    var url = 'https://maps.googleapis.com/maps/api/place/details/json?' +
      'placeid='+ placeId + '&fields=name,formatted_phone_number,website&key=' + 
      API_KEY;
    var response = UrlFetchApp.fetch(url);
    var json = response.getContentText();
    obj2 = JSON.parse(json);
    phoneNo = obj2.result.formatted_phone_number;
    web = obj2.result.website;
    phoneAndWeb = phoneNo + ', ' + web
    return phoneAndWeb
}
于 2019-02-06T07:56:16.617 回答