自动更新自定义功能

发布于 2024-10-02 20:54:54 字数 114 浏览 3 评论 0原文

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

I have a custom function as a Google Spreadsheet script, which depends on some other cells' values. It runs ok the first time I put it in a cell, but then when I change the data in the other cells it stays the same. How can I make the first cell update its value automatically when I change the other cells?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半山落雨半山空 2024-10-09 20:54:54

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

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

这使得名称以 thing 开头的工作表,得到 myCustomFunction 的结果 进入单元格 I1

I found an answer which doesn't fully make me happy but it's good enough I guess.
If you add a function called onEdit to the script of a spreadsheet, it will be called every time stuff is edited. So, this is the code that worked for me: (it has some details that could be useful so I left them unedited)

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

This makes sheets whose name begins with thing, get the result of myCustomFunction into cell I1.

心病无药医 2024-10-09 20:54:54

我有类似的问题。

这就是我在自动取款机上的做法,但这不是最好的解决方案。我正在寻找更好的。

如果价格表和 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)

只需给您的自定义函数一个虚拟参数即可。它在自定义函数中不执行任何操作。

I have a similar problem.

This is how I am doing it atm, but its not the best solution. I am looking for a better one.

If any value at sheet Prices and column D changes.
Meaning if any cell value changes in the whole column it updates the custom function value.

//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];
    }
  }
}

This is how you call it =searchPrice(B8,Prices!D:D)

Just give your custom function a dummy param. It doesn't do anything in the custom function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文