1

我正在尝试编写一个将单元格内容复制到其他单元格的 GAS 电子表格自定义函数。而且我不仅需要使用源单元格的数据填充目标单元格,还需要使用其公式内容(如果有的话)。

现在,我已经知道通过自定义函数这基本上是不可能的,因为它们总是接收单元格计算的结果,而不是单元格公式本身,而且它们也无法返回其目标单元格的公式。

另一方面,有一些函数可以读取和写入单元格公式,例如Range.getFormula()Range.setFormula()这似乎使我的努力成为可能。我只需要找到另一种方式来称呼他们。更新: 同时我发现自定义公式实际上可以使用 读取公式getFormula(),但他们绝对没有权限使用setFormula().

我的问题是...

创建等效于读取和写入单元格公式内容的自定义函数的最优雅的方法是什么?我想我可以使用 onEdit 函数在每次电子表格编辑后更新我的目标单元格,但这意味着我必须对目标单元格范围的坐标进行硬编码,这看起来很hacky并且每次目标范围都需要更改代码被移动(例如,当在其上方插入行时)。

更新:示例

一个示例是一个自定义函数,它能够读取多个单元格范围(每个范围作为不同的函数参数给出)并返回一个连接的单元格范围。

=rangeJoin(A1:B10;D1:E15)

...将读取大小为 2x10 和 2x15 的两个范围,并将使用两个范围的后续单元格内容填充大小为 2x25 的目标范围。目标范围将从包含的单元格开始,rangeJoin并将向右扩展 2 个单元格,向下扩展 25 个单元格(与自定义函数一样)。自定义函数(或类似机制)应该能够复制公式,因此包含的单元格=hyperlink("http://www.google.com";"Google")应该作为超链接出现在目标范围中,而不是作为带有裸词“Google”的文本单元格。

4

1 回答 1

2

同意“莫格达”

IE。此自定义功能有效:

function myGrid() {
  return [[1,2],[3,"http://www.google.com"]];
}

但是,自定义函数不能将公式写入工作表。请参阅https://developers.google.com/apps-script/execution_custom_functions#permissions

作为一种解决方法,您可以使用“触发器”,例如“Mogsdad”建议的基于时间的触发器。

于 2013-12-03T05:53:36.963 回答