【发布时间】:2020-03-02 17:24:09
【问题描述】:
问题
- 我有 6 个 OnEdit 函数,它们可以单独按预期工作,但当它们一起使用时,它们不能按预期工作。我的意思是有些根本不会触发。
脚本的属性
- 他们有不同的名字 -
function onEdit(e) {code}, function onEdit1(e1) {code}, function onEdit2(e2) {code}, function onEdit3(e3) {code}, function onEdit4(e4) {code}, function onEdit5(e5) {code} - 它们都在同一个 .gs 选项卡中
- 其中一些具有相同的变量。例如 OnEdit 有
var range = e.range;而 OnEdit5 有var range = e5.range;
我的理解
- 我相信您可以在同一个 .gs 选项卡中运行多个 OnEdit 函数。它是否正确?还是我需要以某种方式创建新的 .gs 选项卡?
- 我认为我的 onEdit 函数应该命名不同,所以它们被正确调用。这是正确的,还是我应该摆脱不同的功能并将它们放入一个庞大的功能中? (我想这会导致执行速度变慢,以及更多无法隔离不正确代码的情况)。
- 我相信在每个函数中创建的变量是特定于该函数的。这是真的?还是它们相互影响?
我为什么要问这个
这个问题的迭代似乎以前被问过。但是人们通常会建议将两个功能集成为一个大功能,而不是准备某人集成 10-20 个不同的 OnEdit 功能。它们也没有明确指出最佳编码实践。
我已经花了几个小时阅读这个主题,并且觉得像我这样的脚本新手会从了解这一点中受益匪浅。
提前感谢您的任何贡献!
【问题讨论】:
-
最佳实践取决于每个函数的作用。
-
都是 If 语句。作为一个快速的总结,他们做了以下 e = .clearContent(), .uncheck(), .getFilter().sort。 e1 = .getFilter().sort。 e2 = .setValue(new Date())。 e3 = .copyTo(targetRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false), .deleteRow(range2.getRow()。e4 = .clearContent(), .getFilter() .sort(12, true). e5 = .clearContent(), .uncheck(), .getFilter().sort(12, true).
-
我认为最好将所有 onEdit 函数放在一个函数中,我更喜欢使用可安装的触发器。而且我也更喜欢在他们身上做的越少越好。让它们变得毫无用处并不需要太多流量。
标签: performance google-apps-script optimization google-sheets triggers