【问题标题】:Limiting geocoding calls in a Google Spreadsheet限制 Google 电子表格中的地理编码调用
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 这就是我最终要做的,但只有复制 -> 粘贴值。这就是你所说的清晰数据的意思吗?有没有办法通过脚本自动执行此操作?
    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多