我相信这个问题有一个非常简单的答案;
我有一个函数可以很好地工作,但是只有当函数名是'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()); }
}
发布于 2020-09-23 17:53:16
onEdit
是定义函数绑定到简单onEdit
trigger的关键字
onEdit
触发器来代替请参见how to bind
onEdit
上运行多个函数可能会导致冲突,而且基本上不是必需的
onEdit
触发器函数内部调用其他函数示例:
function onEdit(e) {
if (e.range.getSheet().getName() == "A") {
function1();
}
else if (e.range.getSheet().getName() == "B") {
function2();
}
else {
function3();
}
}
function function1(){
Logger.log("The sheet name is A");
}
function function2(){
Logger.log("The sheet name is B");
}
function function3(){
Logger.log("The sheet name is different");
}
发布于 2020-09-23 17:52:14
您有两个选项:
onEdit(e)
函数创建附加的if条件,以便在编辑不同的工作表时执行不同的代码。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)
...
}
https://stackoverflow.com/questions/64024749
复制相似问题