2017-04-24 73 views
0

当我使用Google地图地理编码功能时,我得到此错误消息,我知道当我超过了一天中2500个请求的免费限制时会发生这种情况。不过,我已经设置了一个帐单选项来支付额外的额外请求,但我仍然收到此错误。当我设置结算时,它要求我创建一个项目,然后将其与我的结算信息相关联,然后我就可以使用API​​密钥。服务调用过多次,一天地理编码

我不知道我是否会将该API密钥放在我的代码中。下面是我的代码

var addressColumn = 1; 
    var addressRow; 

    var latColumn = addressColumn + 1; 
    var lngColumn = addressColumn + 2; 

    var geocoder = Maps.newGeocoder().setRegion(getGeocodingRegion()); 
    var location; 

    for (addressRow = 1; addressRow <= cells.getNumRows(); ++addressRow) { 
    var address = cells.getCell(addressRow, addressColumn).getValue(); 

    // Geocode the address and plug the lat, lng pair into the 
    // 2nd and 3rd elements of the current range row. 
    location = geocoder.geocode(address); 

    // Only change cells if geocoder seems to have gotten a 
    // valid response. 
    if (location.status == 'OK') { 
     lat = location["results"][0]["geometry"]["location"]["lat"]; 
     lng = location["results"][0]["geometry"]["location"]["lng"]; 

     cells.getCell(addressRow, latColumn).setValue(lat); 
     cells.getCell(addressRow, lngColumn).setValue(lng); 
    } 
    } 
}; 

任何想法如何我付费结算的项目链接到这个代码,所以我可以增加我的API使用情况的片段?

+0

你看[这里](https://developers.google.com/maps/documentation/geocoding/get-api-key?hl=en#快速获得一把钥匙)? –

回答

0

您必须对表的变化触发它,否则,该功能触发了太多的时间。此外,我还添加了一个计时器,用于缓解二级限制的请求。

function getLatLng(address) { 
     if(address=="")return(""); 
     var API_KEY = "YOUR API KEY"; 

     var options = { 
      muteHttpExceptions: true, 
      contentType: "application/json", 
     }; 


      var serviceUrl = "https://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&key=" + API_KEY; 
     try{ 
      var response = UrlFetchApp.fetch(serviceUrl, options); 

      //sleep random between 2 and 1 second for request 
      var milliseconds = Math.floor(((Math.random() * 2) + 1) * 1000); 
      Utilities.sleep(milliseconds); 

      if (response.getResponseCode() == 200) { 
       var location = JSON.parse(response.getContentText()); 

       if (location["status"] == "OK") { 
        var lat = location["results"][0]["geometry"]["location"]["lat"]; 
        var lng = location["results"][0]["geometry"]["location"]["lng"]; 

        return([[lat,lng]]); 
       } 
       else{ 
       return([["error",location["status"]]]); 
       } 
      } 
     } 
     catch(err){ 
     return([["error",err.message]]); 
     } 
    }; 

你可以得到一个API密钥here。 您可以在表单元格前直接使用此功能:getLatLng(D2)

相关问题