Достигнут предел Google Geocoding API; код не должен вызывать это. Где моя ошибка? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть база данных клиентов в Google Sheets со списком адресов.Я использую геокодирование для генерации их долготы / широты для удобного использования в таблицах Fusion для составления карт.Я использовал следующий код только один раз в списке из 963 клиентов, и он остановился на клиенте 761 с ошибкой «Служба вызывается слишком много раз за один день: геокод».

Мне известно о 2500суточный лимит для вызова Geocode API.Меня смущает то, что я не уверен, как этот код достиг этого предела после 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 голосов
/ 28 сентября 2018

Первое, что нужно проверить, это то, используете ли вы ключ API, потому что в противном случае вы можете довольно легко получить ошибку OVER_QUERY_LIMIT. Некоторые советы о том, как начать использовать ключи API, см. https://issuetracker.google.com/116675310#comment2

0 голосов
/ 18 мая 2018
Maps.newGeocoder().geocode(addressCellData);

Не зная об этой библиотеке, уверены ли вы, что предыдущий код не выполняет более одного запроса к API?

Если это проблема, я думаю, что подходящим способом являетсяследующее:

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

Надеюсь, вы найдете это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...