【发布时间】:2014-03-06 15:34:47
【问题描述】:
我正在使用 this script 对 Google 电子表格中的地址列进行地理编码。它创建了一个函数 getLatLon,它从地址列中获取值。尽管我只有 190 行,但我很快就达到了 2,500 的每日地理编码 API 限制。我认为这是因为每次加载工作表时脚本都会运行。
我想让脚本仅在地址尚未经过地理编码的情况下运行。为此,我尝试使用公式访问单元格的值以查看它是否为空白。如果是这样,请运行地理编码器。但它让我所有的单元格,甚至是地理编码的单元格,都变成了空白。
这是我的代码。我不确定我是否正确使用 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
}
}
};
【问题讨论】:
标签: javascript google-apps-script google-sheets google-geocoder google-geocoding-api