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 Script_Google Sheets - Fatal编程技术网

Google apps script 是否可以在谷歌文档电子表格中定义新功能?

Google apps script 是否可以在谷歌文档电子表格中定义新功能?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,有没有可能在谷歌电子表格中定义一个可以在任何单元格中使用的函数 如果我可以像使用本机函数一样定义和使用引用其他单元格的函数,例如通过输入=myfunction(C1、C2、C3)是-有一个。只需在电子表格中按名称使用javascript函数。使用工具>脚本编辑器定义它们 注意姓名限制;我对自己创建的函数的行为感到困惑,因为没有找到像“function x10(){}”这样的名称。重命名为更长的名称修复了它。对于不允许的内容,可能有成文的规则,但我不知道它们在哪里。我是一个“新手”。但根据我的经验

有没有可能在谷歌电子表格中定义一个可以在任何单元格中使用的函数

如果我可以像使用本机函数一样定义和使用引用其他单元格的函数,例如通过输入
=myfunction(C1、C2、C3)
是-有一个。只需在电子表格中按名称使用javascript函数。使用工具>脚本编辑器定义它们

注意姓名限制;我对自己创建的函数的行为感到困惑,因为没有找到像“function x10(){}”这样的名称。重命名为更长的名称修复了它。对于不允许的内容,可能有成文的规则,但我不知道它们在哪里。

我是一个“新手”。但根据我的经验,你只能进入“手机” 通过“范围”对象。必须将范围定义为单个单元格。 例如“A1:A1”,将允许您访问位于“A1”的单元格

范围是与“图纸”关联的对象。 图纸是与“电子表格”关联的对象

以下是访问当前活动工作表中单元格A1的一些示例代码:

var cell_A1 = SpreadsheetApp.getActiveSheet().getRange("A1:A1");
从这里可以像传递任何其他参数一样传递对象

myFunction(cell_A1);
接收函数必须“知道”它正在处理一个“范围”。 它只能通过调用与 “范围”对象

小心!“范围”可以由多个单元格组成。你的电话 函数应进行测试,以查看它是否与单个单元格一起工作。 如果传递多个单元格的范围,则函数可能不会传递 以你期望的方式行动

range对象的两个方法:“getNumRows()”和“getNumColumns()” 返回范围对象中的行数和列数

通常,如果您使用的方法仅限于更改或访问 一个单电池,并在更大的范围内运行,该功能将只 在左上角的单元格成员上执行。但是要小心。当你 可能假设一个方法只改变一个单元格,但实际上可能 影响范围内的所有单元格。仔细阅读文档

还有另一种方法可以获得单个单元格的范围。它的指令 看起来像这样:

var cell_B2 = SpreadsheetApp.getActiveSheet().getRange(2, 2, 1, 1).
前两个参数告诉“getRange”函数 单元格(行、列格式)。后两个参数定义了 要与范围关联的“行”和“列”。通过将它们都设置为 “1”,您可以访问单个单元格


希望这能有所帮助。

这些自定义函数速度较慢。请小心。看起来电子表格中可用的函数并非全部可用于脚本。例如,尝试在脚本中使用JOIN函数会导致错误“JOIN not defined”,即使在电子表格中使用JOIN本身也可以。这不是他的要求。他询问使用custon函数,就像单元格中的内置电子表格函数一样。在这些情况下,您不会像您所说的那样获得单元格值。您的解释仅适用于带有脚本的“常规”函数,而不适用于自定义函数。x10不是有效的函数名,因为它也是单元格的本机名称(行“10”,列“X”)。除此之外,没有特别的规定。要记住的另一个重要事实是,自定义函数只应在传递参数的情况下运行,即不应使用任何外部值,因为函数必须是确定性的(相同的输入应始终返回相同的值,因为电子表格将缓存该值)。