是否可以在Google-docs电子表格中定义新功能?

时间:2011-01-28 21:18:33

标签: google-apps-script google-sheets

是否可以在Google Spreadsheets中定义可在任何单元格中使用的功能?

如果我能够以与使用本机函数相同的方式定义和使用引用其他单元格的函数,将会很有帮助。输入=myfunction(C1, C2, C3)

2 个答案:

答案 0 :(得分:8)

是的 - 有一个tutorial。只需在电子表格中按名称使用javascript函数即可。使用工具>定义它们脚本编辑器。

注意名称限制;我对我创建的函数的行为感到困惑,其名称如“function x10(){}”未找到。重命名为更长的名称修复它。可能有关于不允许的内容的文件规则,但我不知道它们在哪里。

答案 1 :(得分:-2)

我是“新手”。但是我的经验是你只能访问“细胞” 通过“范围”对象。您必须将范围定义为单个单元格。 例如“A1:A1”,将允许您访问“A1”处的单元格。

RANGE是与“SHEET”相关联的对象。 SHEET是与“SPREADSHEET”相关联的对象。

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

var cell_A1 = SpreadsheetApp.getActiveSheet().getRange("A1:A1");

从这里你可以像任何其他参数一样传递对象。

myFunction(cell_A1);

接收功能必须“知道”它正在处理“范围”。 它只能通过调用与之关联的“方法”来访问其值 “范围”对象。

小心! “范围”可以包含多个单元格。你的电话 函数应该测试它是否正在使用单个单元格。 如果您传递多个单元格的范围,则您的函数可能不会 以你期望的方式行事。

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

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

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

var cell_B2 = SpreadsheetApp.getActiveSheet().getRange(2, 2, 1, 1).

前两个参数告诉“getRange”函数的位置 单元格(行,列格式)。后两个参数定义了数量 与行范围相关联的“行”和“列”。通过将它们设置为 “1”,您访问单个单元格。

希望这有帮助。