首页 > 解决方案 > Apps 脚本仅在特定选项卡/工作表上运行 onEdit

问题描述

我敢肯定这个问题有一个非常简单的答案;

我有一个可以完美运行的函数,但是它仅在函数名称为“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());                                                                         }
                        }

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


  • onEdit是定义函数绑定到简单触发器的关键字onEdit

  • 如果要重命名函数,但要保留功能,则可以使用可安装 onEdit的触发器

  • 请参阅此处如何将其绑定到您的重命名函数

  • 请注意,运行多个函数onEdit可能会导致冲突,而且大多数情况下没有必要

  • onEdit如有必要,您可以从 triggerred函数内部调用其他函数

样本:

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");
}

推荐阅读