【问题标题】:Update custom function automatically自动更新自定义函数
【发布时间】:2010-11-18 21:26:03
【问题描述】:

我有一个自定义函数作为 Google 电子表格脚本,它取决于其他一些单元格的值。我第一次把它放在一个单元格中时它运行正常,但是当我更改其他单元格中的数据时它保持不变。当我更改其他单元格时,如何使第一个单元格自动更新其值?

【问题讨论】:

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


    【解决方案1】:

    我找到了一个不能完全让我开心的答案,但我想这已经足够好了。 如果您将一个名为onEdit 的函数添加到电子表格的脚本中,则每次编辑内容时都会调用该函数。所以,这是对我有用的代码:(它有一些可能有用的细节,所以我没有编辑它们)

    function onEdit(event) {
      if (SpreadsheetApp.getActiveSheet().getName().substr(0,5) == "thing")
        SpreadsheetApp.getActiveSheet().getRange("I1").setValue(myCustomFunction());
    }
    

    这使得名称以thing 开头的表格,将myCustomFunction 的结果放入单元格I1

    【讨论】:

      【解决方案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
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多