Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 从Google Apps脚本自定义函数读取和写入单元格公式_Google Apps Script_Google Sheets_Formulas_Custom Function - Fatal编程技术网

Google apps script 从Google Apps脚本自定义函数读取和写入单元格公式

Google apps script 从Google Apps脚本自定义函数读取和写入单元格公式,google-apps-script,google-sheets,formulas,custom-function,Google Apps Script,Google Sheets,Formulas,Custom Function,我正在尝试编写一个GAS电子表格自定义函数,将单元格内容复制到其他单元格。我不仅需要用源单元格的数据填充目标单元格,还需要用其公式内容(如果有)填充目标单元格 现在,我已经知道,通过自定义函数,这基本上是不可能的,因为它们总是接收单元格计算的结果,而不是单元格公式本身,并且它们也不能返回目标单元格的公式 另一方面,有一些函数可以读取和写入单元格公式,例如Range.getFormula()和Range.setFormula(),这似乎使我的努力成为可能。我只需要找到另一种称呼他们的方式更新:与此

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

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

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

我的问题是……

创建与读取和写入单元格公式内容的自定义函数等效的东西的最优雅的方法是什么?我想我可以使用OneEdit函数,在每次电子表格编辑后更新我的目标单元格,但这意味着我必须硬编码目标单元格范围的坐标,这似乎非常粗糙,每次移动目标范围时(例如,在其上方插入行时)都需要更改代码

更新:示例

例如,一个自定义函数能够读取多个单元格区域(每个区域作为一个不同的函数参数给出),并返回一个连接的单元格区域

=rangeJoin(A1:B10;D1:E15)

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

同意“Mogsdad”

即,此自定义功能可用于:

function myGrid() {
  return [[1,2],[3,"http://www.google.com"]];
}
但是,自定义函数无法将公式写入工作表。看


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

一个小的弹出式用户界面,要求您选择目的地范围如何?这对你的情况有用吗?该函数可以通过按钮或菜单调用,甚至可以在每次编辑时调用。让我们知道你的想法。:-)嗨@Sergeinsas,老实说,我希望有一个更精简的解决方案,仍然能够通过单元格中的某种标记确定原点和目标范围。当然有!但在你的问题中不清楚源和目标之间的关系到底是什么。你能解释清楚吗?您还提到它可能会改变…请澄清Hi@Sergeinsas,我已经在我的OP中添加了一个例子,说明我试图实现的目标。非常类似于。最好是使用定时函数来查看合并范围,查找和复制公式。哎呀。