Я не уверен насчет задержки. Возможно, вам придется поиграть с этим. И я также не уверен, что вам разрешат сделать 3000 операций за один день. Но не обращая внимания на квоты на данный момент, , которые я бы не рекомендовал , вы могли бы сделать что-то вроде этого.
Похоже, что эта услуга платная, так что я предполагаю, что она будет вам чего-то стоить. Прочитайте ссылки внизу об использовании API и биллинге.
function loopGeocode(start) {
var start=start || 0;
var ss=SpreadsheetApp.getActive();
var sh1=ss.getSheetByName('Points');
var sh2=ss.getSheetByName('Locations');
var pt=sh1.getRange(1, 1,sh.getLastRow(),1).getValues();
for(var i=start;i<pt.length;i++) {
sh2.appendRow([i+1,pt[i][0],geo2zip(pt[i][0])])
Utilities.sleep(8000);//I have no idea what this delay should be
}
return i+1;
}
function geo2zip(a) {
var response=Maps.newGeocoder().reverseGeocode(lat(a),long(a));
return response.results[0].formatted_address.split(',')[2].trim().split(' ')[1];
}
function lat(pointa) {
var response = Maps.newGeocoder().geocode(pointa);
return response.results[0].geometry.location.lat
}
function long(pointa) {
var response = Maps.newGeocoder().geocode(pointa);
return response.results[0].geometry.location.lng
}
Я запускаю его из таймера JavaScript и пробую запускать каждые 6 минут. Я не знаю, будет ли withSuccessHandler () ждать так долго, поэтому вам может потребоваться сохранить возвращаемое значение, которое сообщает циклу, с чего каждый раз начинать считать. Возможно, вы могли бы хранить в PropertiesService. Это займет около 15 часов.
Использование геокодирования и биллинг API
API геокодирования Начало работы
Пример таймера Javascript
После прочтения некоторых ссылок я считаю, что приемлемо 50 запросов в секунду, поэтому решение может не иметь ничего общего с добавлением времени между выборками. Вероятно, это вопрос настройки платежного аккаунта и оплаты по мере поступления.
Создание, изменение или закрытие платежного аккаунта