GAS中的脚本和自定义函数有什么区别?

时间:2017-07-26 14:48:11

标签: google-apps-script google-sheets

这可能是一个愚蠢的问题,但我还没有找到GAS文档中明确列出的差异,我想知道什么是合格的脚本与自定义函数。我有一个Google表格,需要在编辑上运行一个功能,检查输入的值是否已经存在于另一个页面上(使用复制/粘贴一次输入许多行项目,并且当前脚本逐行进行以确定是否存在每行中的唯一标识符已经存在于另外两个工作表中的一个上,删除任何重复项。我从onEdit()调用此函数,平均而言似乎需要30-40秒才能运行。

这是我遇到问题的地方,因为自定义函数运行的时间限制是30秒,而脚本可以运行5分钟。我应该计划我的数据集增长,因此需要这个过程作为脚本运行,以便它不会中途切断。我认为onEdit()和你从它调用的任何东西都被认定为脚本而不是自定义函数,但显然情况并非如此。你如何制作一个剧本与一个函数?

编辑:不确定原因,但创建一个在编辑时调用onEdit的手动触发器似乎将其作为脚本运行,而内置的隐式onEdit调用则称为自定义函数。这解决了我当前的问题,但如果有人对这种差异有解释,我仍会非常感激!

1 个答案:

答案 0 :(得分:3)

主要区别在于,通过在电子表格的单元格中输入=functionName()来调用自定义函数。此外,自定义函数必须返回要在单元格中显示的值。请参阅Google Documentation

以上链接的相同文档中的示例是自定义函数的示例。通过在电子表格的单元格中输入(例如)=DOUBLE(5)来调用自定义函数。该函数将以input参数(5)运行并乘以2,然后返回答案(10)并在电子表格单元格中显示该值。

function DOUBLE(input) {
  return input * 2;
}

但是,您的onEdit()函数是通过触发器调用的,无论是简单的触发器,安装的触发器,自定义菜单按钮还是脚本编辑器中的运行按钮,它都不需要返回值到主要功能。

如果您尝试在电子表格的单元格中输入=onEdit(),该功能将无法运行,您将在单元格中收到错误。