我敢肯定,这个问题的答案很简单;
我有一个功能完美的函数,但是仅当函数名称为'onEdit'时才起作用,这不是我想要的,因为我想为不同的选项卡创建类似的函数,因此检查表名的第一行可以有人请指出我的错误方式:-)谢谢。
function onEdit(e) {
if (e.range.getSheet().getName() != "PrintNoteLines") {
return}
var sh = e.source.getActiveSheet()
if (sh.getName().indexOf('PrintNoteLines') > -1 && e.range.getA1Notation() == 'B1' && e.value) {
sh.getRange('A25:A183')
.setDataValidation(SpreadsheetApp.newDataValidation()
.requireValueInRange(e.source.getRangeByName(e.value), true)
.setAllowInvalid(false)
.build()); }
}
答案 0 :(得分:2)
Repository
是一个关键字,定义该功能绑定到一个简单的onEdit
触发器](https://developers.google.com/apps-script/guides/triggers#onedite)
如果要重命名功能,但要保持功能性,可以改用installable onEdit
触发器
请参阅here如何将其绑定到重命名的函数
请注意,在onEdit
上运行多个功能会导致冲突,并且多数情况下没有必要
如有必要,您可以从onEdit
触发函数内部调用其他函数
示例:
onEdit
答案 1 :(得分:1)
您有两个选择:
onEdit(e)
函数创建其他条件,以执行不同的操作
编辑不同工作表时输入代码。onEdit(e)
触发器函数,该函数可以为所有其他functionName(e)
供稿。例如:
将当前代码的功能重命名为myFunction1(e)
:
function myFunction1(e) {
if (e.range.getSheet().getName() != "PrintNoteLines") {
return}
var sh = e.source.getActiveSheet()
if (sh.getName().indexOf('PrintNoteLines') > -1 && e.range.getA1Notation() == 'B1' && e.value) {
sh.getRange('A25:A183')
.setDataValidation(SpreadsheetApp.newDataValidation()
.requireValueInRange(e.source.getRangeByName(e.value), true)
.setAllowInvalid(false)
.build()); }
}
,然后像这样从onEdit(e)
函数中馈入event object:
function onEdit(e){
myFunction1(e)
}
通过这种方式,您可以在编辑后执行多个功能:
function onEdit(e){
myFunction1(e);
myFunction2(e);
myFunction3(e)
...
}