已达到Google地理编码API限制;代码不应该导致它。我的错误在哪里?

时间:2018-05-17 22:09:08

标签: google-geocoding-api

我在Google表格中有一个客户数据库,其中包含一个地址列表。我使用地理编码生成经度/纬度,以便在Fusion Tables中进行映射。我在963个客户的列表中只使用了以下代码一次,并且在客户761上停止了#34;服务在一天内被调用了太多次:地理编码"错误。

我知道调用Geocode API的每日限制为2,500。令我困惑的是,我不确定此代码在761次迭代后如何达到该限制。我一次又一次地查看它,并且不知道每次迭代它是如何执行多于1个请求的。我没有其他类似的项目,直到现在才使用过Geocode API功能。我希望将来能够防止意外地发现此错误。

我哪里出错?

function geocodeFirstAddressFromCell(){
    var sss = SpreadsheetApp.openById('WORKBOOK ID HERE');
    var ss = sss.getSheetByName('Sheet1');
    var lastRow = ss.getLastRow();
    for (var startRow = 2; startRow < lastRow; startRow++) {
        var addressCellData = ss.getRange(startRow, 13).getValue();
        var results = Maps.newGeocoder().geocode(addressCellData);
        if (results.status == 'OK') {
            var bestResult = results.results[0];
            var lat = bestResult.geometry.location.lat;
            var lng = bestResult.geometry.location.lng;
            var latLng = lat + ',' + lng;
            var addressTargetCellData = ss.getRange(startRow, 16).setValue(latLng);
            ss.getRange(startRow, 17).setValue(1);
        } else {
            Logger.log(results.status);
            return '0,0';
        }
    }
}

2 个答案:

答案 0 :(得分:1)

首先要检查的是您是否正在使用API​​密钥,因为否则,您很容易遇到OVER_QUERY_LIMIT错误。有关如何开始使用API​​密钥的一些提示,请参见https://issuetracker.google.com/116675310#comment2

答案 1 :(得分:0)

Maps.newGeocoder().geocode(addressCellData);

如果不了解这个库,您确定以前的代码没有向API发出多个请求吗?

如果这是问题,我认为适当的方法如下:

var geocoder = Maps.newGeocoder();
for (...) {
    var results = geocoder.geocode(addressCellData);
}

我希望你觉得它很有用。