限制Google电子表格中的地理编码调用

时间:2014-03-06 15:34:47

标签: javascript google-apps-script google-sheets google-geocoder google-geocoding-api

我正在使用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

    } 
  }   
};

1 个答案:

答案 0 :(得分:0)

您可以将地理编码的行移动到另一个工作表。始终保持脚本的清晰数据。