自动更新自定义功能

时间:2010-11-18 21:26:03

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

我有自定义功能作为Google Spreadsheet脚本,这取决于其他一些单元格的值。它第一次放入单元格时运行正常,但是当我更改其他单元格中的数据时,它保持不变。当我更改其他单元格时,如何让第一个单元格自动更新其值?

2 个答案:

答案 0 :(得分:4)

我找到了一个不能让我满意的答案,但我觉得这很好。 如果您将一个名为onEdit的函数添加到电子表格的脚本中,则每次编辑内容时都会调用它。所以,这是对我有用的代码:(它有一些可能有用的细节,所以我没有给他们留下它们)

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

这会使名称以thing开头的工作表将myCustomFunction的结果导入单元格I1

答案 1 :(得分:0)

我有类似的问题。

这是我在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)

只需给您的自定义函数一个虚拟参数即可。在自定义函数中它什么也没做。