【问题标题】:Using multiple OnEdits使用多个 OnEdit
【发布时间】:2020-04-02 15:42:41
【问题描述】:

所以我正在尝试将一些 onEdits 与特定标准结合起来,但我正在苦苦挣扎。我是新手,但我之前得到了一些帮助,并且能够创建 OnEdits,这些 OnEdits 将转到同一工作表中的不同指定选项卡。

但是,现在我正在尝试保留该功能,但还添加了从另一个工作表添加多个 OnEdit 的功能。

例如 - 在主选项卡上检查的列将转到导出 1 和 2,而从单独的选项卡(master2 将)检查的列将转到名为导出 3 和 4 的选项卡。所以基本上 - 从两个开始的两个单独的 onEdit不同的标签,而不是一个。

这可能吗?这是我尝试过的,但我非常不满意。

function onEdit(e) {
  //e.source.toast('Entry' + JSON.stringify(e));
  var sh=e.range.getSheet();
  if(sh.getName() == "master" && e.value=="TRUE") {
    if(e.range.columnStart==4) {
      //e.source.toast('Flag1');
      var tsh=e.source.getSheetByName("export1");
      var trg=tsh.getRange(tsh.getLastRow()+1,1);
    }
    if(e.range.columnStart==5) {
      //e.source.toast('Flag2');
      var tsh=e.source.getSheetByName("export2");
      var trg=tsh.getRange(tsh.getLastRow()+1,1);
    }
    sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).copyTo(trg)
   if(sh.getName() == "master2" && e.value=="TRUE") {
    if(e.range.columnStart==4) {
      //e.source.toast('Flag1');
      var tsh=e.source.getSheetByName("export3");
      var trg=tsh.getRange(tsh.getLastRow()+1,1); 
     }
}

【问题讨论】:

  • 答案可能是肯定的。但是您必须提供更多详细信息。
  • 谢谢@Cooper - 我基本上有两个单独的标签。我不想合并数据,因为它不相关。在一个选项卡上,我想这样做,以便该选项卡上第 4 列中的复选框将发送到一个名为“export1”的选项卡。然后,使用不同的主表“master2”,我想要一堆带有复选框的列,所以如果要检查其中的任何一个,该行将转到不同的选项卡。每列都有自己的选项卡,因此只要单击对齐的复选框,就会有 10 个隐藏的选项卡获取信息

标签: javascript google-apps-script google-sheets javascript-objects triggers


【解决方案1】:

我想这就是你要找的东西:

function onEdit(e) {
  //e.source.toast('Entry' + JSON.stringify(e));
  var sh=e.range.getSheet();
  //master
  if(sh.getName() == "master" && e.value=="TRUE") {
    if(e.range.columnStart==4) {
      //e.source.toast('Flag1');
      var tsh=e.source.getSheetByName("export1");
      var trg=tsh.getRange(tsh.getLastRow()+1,1);
    }
    if(e.range.columnStart==5) {
      //e.source.toast('Flag2');
      var tsh=e.source.getSheetByName("export2");
      var trg=tsh.getRange(tsh.getLastRow()+1,1);
    }
    sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).copyTo(trg);
  }
  //master2
  if(sh.getName()=="master2" && e.value=="TRUE") {
    if(e.range.columnStart==4) {
      //e.source.toast('Flag1');
      var tsh=e.source.getSheetByName("export3");
      var trg=tsh.getRange(tsh.getLastRow()+1,1); 
    }
    sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).copyTo(trg)
  }
}

【讨论】:

  • 嘿@Co​​oper - 这正是我要找的!我早些时候试图把它拼凑起来。看起来我仍然遇到问题 - 我在尝试保存您创建的代码时收到此问题:SyntaxError: Unexpected token } (line 17, file "Code.gs") 有什么想法吗?再次感谢,我知道我在这一切方面都很糟糕,但我正在努力学习!我尝试删除第 17 行中的括号,但也没有运气。
  • 抱歉,我在一行的末尾使用了逗号而不是分号。
  • 哇!工作就像一个魅力 - 你是一个天才,我的朋友!非常感谢@Cooper
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
相关资源
最近更新 更多