【问题标题】:Service Invoked too many times for one day: geocode ARRAY FORMULA一天内调用了太多次服务:地理编码 ARRAY FORMULA
【发布时间】:2020-04-21 19:22:19
【问题描述】:

我希望有人可以帮助我,我在 Google 表格中遇到了这个问题。我有一列地址 (I)、一列坐标 (J) 和一个备份坐标列 (K)。

我正在使用脚本创建自定义公式,以使用 Google 本地化服务从地址计算坐标。在我的坐标列 (J) 我有一个这样的数组公式

=ARRAYFORMULA(IF(LEN(K2:K) > 0,K2:K,GEOCODE_GOOGLE(I2:I)))

所以,如果 K 有一个值,那么我将该值复制到我的列中,否则我使用 GEOCODE 自定义公式。我的问题是我遇到了这个错误:

一天服务调用次数过多:地理编码。 (第 5 行)

我知道使用此服务有限制,但我的工作表每天只有 20 或 30 行新行,所以我认为问题可能出在我的数组公式中?,我的工作表现在有 200 行,所以也许每次插入新行,公式都会执行 200 次?

请大家帮忙,谢谢

【问题讨论】:

  • 你能分享一份你正在处理的电子表格的净化副本吗?
  • 很遗憾我无法分享我的电子表格,因为它来自客户。但是很简单。我有 3 列 I、J、K、I 列(地址)、J 列(坐标)、K 列(备份坐标),我使用 GEOCODE 从 I 列获取坐标,我使用这样的数组公式执行此操作:= ARRAYFORMULA(IF(LEN(K2:K) > 0,K2:K,GEOCODE_GOOGLE(I2:I))) 所以如果我有数据列 K 我不使用 GEOCODE
  • 好吧,您至少可以分享一下与自定义公式相关的代码吗? (GEOCODE_GOOGLE)。这就是问题所在。
  • 感谢您的帮助。我已经找到了解决问题的方法

标签: google-sheets localization geocode


【解决方案1】:

如果有人需要解决方案,我已经找到了。我在数组公式中使用了这个自定义公式,所以在我的工作表上的每个新行上,公式都在计算所有行的坐标,所以我必须找到一种方法来验证是否已经计算了一行。我在我的地址栏中添加了一个文本。例如,如果地址是“123 Mapple Street”,现在它会显示“123 Mapple Street..DoNotLocate..”,如果它已经被定位,那么我的脚本不会对其进行地理定位。

这是我的验证脚本:

function GEOCODE_GOOGLE(address) {
  if (address.map) {
     return address.map(GEOCODE_GOOGLE)
  } else {
    var n = address.search("…DoNotLocate…");
    if (n == -1) {
     var r = Maps.newGeocoder().geocode(address)
     for (var i = 0; i < r.results.length; i++) {
      var res = r.results[i]
      return res.geometry.location.lat + ", " + res.geometry.location.lng
     }
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多