Я использую этот скрипт для геокодирования адреса столбец в таблице Google. Он создает функцию getLatLon, которая принимает значение из столбца адреса. Несмотря на то, что у меня всего 190 строк, я быстро достиг дневного лимита API геокодирования в 2500. Я думаю, это потому, что скрипт запускается каждый раз при загрузке листа.
Я хочу, чтобы скрипт запускался только в том случае, если адрес еще не был геокодирован. Для этого я попытался получить доступ к значению ячейки с формулой, чтобы увидеть, пусто ли оно. Если да, запустите геокодер. Но из-за этого все мои ячейки, даже геокодированные, вместо этого становятся пустыми.
Вот мой код. Я не уверен, правильно ли я использую getValue() (он возвращает пустую строку, если нет значения), или тот факт, что в моей ячейке есть формула, делает значение непустым.
Как еще можно проверить наличие пустого значения в ячейке с формулой?
function getLatLon(address) {
var sh = SpreadsheetApp.getActiveSpreadsheet();
var cell = sh.getActiveCell();
var value = cell.getValue();
if (address == '') {
Logger.log("Must provide an address");
return;
}
if (value == '' ) {
var geocoder = Maps.newGeocoder();
var location;
location = geocoder.geocode(address);
Utilities.sleep(2000);
// 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"];
return lat + "," + lng
}
}
};