vba*_*all 6 google-sheets google-apps-script
这可能是一个愚蠢的问题,但我无法找到 GAS 文档中明确概述的差异,我想知道什么是脚本与自定义函数。我有一个 Google 表格,需要在编辑时运行一个函数,检查输入的值是否已存在于另一个页面上(许多行项目是通过复制/粘贴一次输入的,当前脚本逐行确定是否存在每行的唯一标识符已存在于其他两张纸中的一张上,删除任何重复项)。我从 onEdit() 调用此函数,平均运行时间似乎为 30-40 秒。
这就是我遇到问题的地方,因为自定义函数运行的时间限制是 30 秒,而脚本可以运行 5 分钟。我应该计划我的数据集增长,因此需要这个过程作为脚本运行,这样它就不会中途中断。我认为 onEdit() 以及您从中调用的任何内容都符合脚本而不是自定义函数的要求,但显然情况并非如此。如何制作脚本与函数?
编辑:不知道为什么,但创建一个在编辑时调用 onEdit 的手动触发器似乎将其作为脚本运行,而内置的隐式 onEdit 调用则作为自定义函数调用。这解决了我眼前的问题,但如果有人能解释其中的差异,我仍然会非常感激!
主要区别在于,通过输入电子表格上的单元格来调用自定义函数。=functionName()此外,自定义函数必须返回一个要在单元格中显示的值。请参阅Google 文档。
下面的示例来自我上面链接的同一文档,是自定义函数的示例。=DOUBLE(5)通过在电子表格的单元格中输入(例如)来调用自定义函数。该函数将运行,获取input参数 (5) 并将其乘以 2,然后返回答案 (10) 并在电子表格单元格中显示该值。
function DOUBLE(input) {
return input * 2;
}
Run Code Online (Sandbox Code Playgroud)
但是,您的onEdit()函数是通过触发器调用的,无论是简单触发器、已安装触发器、自定义菜单按钮还是脚本编辑器中的运行按钮,并且不需要将值返回到主函数。
如果您尝试=onEdit()在电子表格的单元格中输入内容,该函数将不会运行,并且您将在单元格中收到错误消息。