【问题标题】:Google spreadsheet custom function: How to get a continuously updated valued?谷歌电子表格自定义功能:如何获得持续更新的值?
【发布时间】:2012-12-05 18:41:40
【问题描述】:

我在与我的谷歌文档电子表格关联的脚本中编写了一个自定义谷歌应用脚​​本函数。该函数调用第三方服务来获取数据。我可以把函数放在一个单元格中:

=myfunction("something")

它会从服务返回正确的值。但是,如何保持此值更新,以便显示来自服务的最新数据?

更新

例如:

=temperature("90120")

用于获取给定邮政编码中的当前温度。此外,我的工作表可能有几十个或几百个,所以我更喜欢高性能和可维护的东西。它并不真正需要是连续的,每分钟轮询一次或更频繁地轮询可以工作。我想知道脚本中是否有某种方法可以设置一个计时器来运行以更新一系列单元格?

【问题讨论】:

  • @ScampMichael:谢谢看起来对一次性计算很有用,虽然我会在很多单元格中使用它,所以我宁愿输入更简单的东西
  • 也许创建另一个工作表,其中邮政编码由 FILTER 功能收集。您可以准备一个获取临时文件的脚本。并在脚本上设置一个触发器,让我们说每分钟。通过使用 VLOOKUP,您可以检索最新的温度。对于给定的邮政编码。

标签: google-apps-script google-sheets custom-function


【解决方案1】:

不知道为什么需要几十个或几百个。 1. 电子表格是否被其他进程使用? 2. 电子表格是否由实际用户直观查看?

如果 #1,您可以通过内容服务将电子表格替换为自定义 API,以返回所有温度的 JSON 结果。

如果是 #2,您可能会因为如此频繁地触发如此多的函数而达到限制或性能问题。如果没有人查看结果,为什么要触发函数。或者,您可以使用自定义菜单选项将其设为按需。

【讨论】:

    【解决方案2】:

    我也有类似的问题。

    这就是我在 atm 上的做法,但这不是最好的解决方案。我正在寻找更好的。

    如果工作表价格和 D 列中的任何值发生变化。 这意味着如果整列中的任何单元格值发生变化,它会更新自定义函数值。

    //Search Price sheet with the given name. Return price. dummy param updates google ss once the "Prices" sheet values changed.
    function searchPrice(price,dummy)
    {
      var SPREADSHEET_NAME = "Prices";
      var SEARCH_COL_IDX = 2;
      var RETURN_COL_IDX = 3;
      var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();
      for (var i = 0; i < values.length; i++)
      {
        var row = values[i];
        if (row[SEARCH_COL_IDX] == price)
        {
          return row[RETURN_COL_IDX];
        }
      }
    }
    

    这就是你所说的 =searchPrice(B8,Prices!D:D)

    只需给您的自定义函数一个虚拟参数。它在自定义函数中没有任何作用。

    【讨论】:

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