将参数/参数从Google工作表自定义函数传递到脚本函数

Nei*_*mka 12 arguments google-sheets google-apps-script custom-function

我坚持做一些基本的事情.如何将参数传递给Google表格自定义函数.

我在Apps脚本代码编辑器中有一个函数定义为:

function usageByMonth(range,theDate) {
    [ do something with the arguments passed ]
}
Run Code Online (Sandbox Code Playgroud)

在我的Google表格中,该功能用作

=usageByMonth('Source Meter Readings'!A5:A,B1)
Run Code Online (Sandbox Code Playgroud)

在尝试调试函数时,我发现这两个参数是"未定义的".我已经查看了很多帖子,甚至直接从示例中复制了函数,结果相同.

Ala*_*lls 11

从代码编辑器运行函数不会检索参数.在那种情况下,参数将始终未定义.对于使用onEdit()简单触发器的情况也是如此.传递给函数的参数的唯一方法是在电子表格单元格中输入有效的自定义函数.

如果要从代码编辑器测试自定义函数的代码,则必须"硬编码"参数值.

此外,Logger.log()在工作表中计算自定义函数时,不会将任何内容记录到日志中.

从一个有效的简单自定义函数开始,并以此为基础.

如果要将范围传递给自定义函数的代码,则必须了解二维数组是什么:

二维数组:

[  [inner Array One],  [inner Array Two], [etc]  ]
Run Code Online (Sandbox Code Playgroud)

来自范围的数据被放入二维阵列中.有一个外部数组,内部数组.内部数组具有与范围中的列数一样多的元素.

[  ['single value from first column', 'single value second column']  ]
Run Code Online (Sandbox Code Playgroud)

上述2D阵列仅用于具有两列的1行.

所以要创建一个简单的自定义函数作为测试,创建一个函数:

function myCustomFunction(argOne) { 
  return argOne[0][0];
};
Run Code Online (Sandbox Code Playgroud)

如果范围是A1:B5,则自定义函数将返回A1中的值;

=myCustomFunction(A1:B5)
Run Code Online (Sandbox Code Playgroud)

如果您的参数被传递到.gs服务器函数,唯一可以确定的方法是,如果您得到结果.

有些输入您无法使用.如果您使用不允许的输入,那么(从文档中引用):

如果自定义函数尝试根据这些易失性内置函数之一返回值,它将无限期地显示正在加载...

例如,您不能使用NOW()或RAND()作为参数.