Javascript 展览及展览;基于复选框隐藏行

Javascript 展览及展览;基于复选框隐藏行,javascript,google-apps-script,google-sheets,triggers,javascript-objects,Javascript,Google Apps Script,Google Sheets,Triggers,Javascript Objects,首先,我要说的是,我对编码非常缺乏经验,因此非常感谢您的帮助 我试图根据是否勾选复选框来显示/隐藏行。例如,我在A5中有一个复选框-如果未选中,我希望它隐藏第6:18行,如果选中,我希望它显示第6:18行 function onEdit(e) { var cfg = { // Please set this object. A5: {startRow: 6, endRow: 18}, A19: {startRow: 20, endRow: 26}, A27: {sta

首先,我要说的是,我对编码非常缺乏经验,因此非常感谢您的帮助

我试图根据是否勾选复选框来显示/隐藏行。例如,我在A5中有一个复选框-如果未选中,我希望它隐藏第6:18行,如果选中,我希望它显示第6:18行

function onEdit(e) {
  var cfg = { // Please set this object.
    A5: {startRow: 6, endRow: 18},
    A19: {startRow: 20, endRow: 26},
    A27: {startRow: 28, endRow: 37},
  };

  var activeRange = e.range.getA1Notation();
  var ranges = Object.keys(cfg);
  if (cfg[activeRange]) {
    var sheet = e.source.getActiveSheet();
    var values = sheet.getRange(ranges[0] + ":" + ranges[ranges.length - 1]).getValues();
    values.forEach(function(e, i) {
      if (e[0]) {
        sheet.showRows(cfg[ranges[i]].startRow, cfg[ranges[i]].endRow - cfg[ranges[i]].startRow);
      } else {
        sheet.hideRows(cfg[ranges[i]].startRow, cfg[ranges[i]].endRow - cfg[ranges[i]].startRow);
      }
    });
  }
}
A19中的复选框也是如此,分别隐藏/显示第20:26行。A27适用于第28:37行等

我发现了一个以前的论坛帖子,我将在其中链接下面的代码,但是第一个复选框隐藏了所有行(例如,如果A5未选中,它将隐藏第6:18、20:26和28:37行。当它被选中时,它只显示第6:18行

function onEdit(e) {
  var cfg = { // Please set this object.
    A5: {startRow: 6, endRow: 18},
    A19: {startRow: 20, endRow: 26},
    A27: {startRow: 28, endRow: 37},
  };

  var activeRange = e.range.getA1Notation();
  var ranges = Object.keys(cfg);
  if (cfg[activeRange]) {
    var sheet = e.source.getActiveSheet();
    var values = sheet.getRange(ranges[0] + ":" + ranges[ranges.length - 1]).getValues();
    values.forEach(function(e, i) {
      if (e[0]) {
        sheet.showRows(cfg[ranges[i]].startRow, cfg[ranges[i]].endRow - cfg[ranges[i]].startRow);
      } else {
        sheet.hideRows(cfg[ranges[i]].startRow, cfg[ranges[i]].endRow - cfg[ranges[i]].startRow);
      }
    });
  }
}
如前所述,第一个复选框隐藏所有行(例如,如果未选中A5,则隐藏行6:18、20:26和28:37。然后选中该复选框,则仅显示行6:18。

    function onEdit(e) {
      var cfg = { // Please set this object.
        A5: {startRow: 6, endRow: 18},
        A19: {startRow: 20, endRow: 26},
        A27: {startRow: 28, endRow: 37},
      };
    
      var activeRange = e.range.getA1Notation();
      var ranges = Object.keys(cfg);
      if (cfg[activeRange]) {
        var sheet = e.source.getActiveSheet();
        var values = sheet.getRange(ranges[0] + ":" + ranges[ranges.length - 1]).getValues();
        values.forEach(function(e, i) {
          if (e[0]) {
            sheet.showRows(cfg[ranges[i]].startRow, cfg[ranges[i]].endRow - cfg[ranges[i]].startRow);
          } else {
            sheet.hideRows(cfg[ranges[i]].startRow, cfg[ranges[i]].endRow - cfg[ranges[i]].startRow);
          }
        });
      }
    }
    
  • 当“A5”复选框未选中时,您希望隐藏从6到18的行
  • 如果未选中“A19”复选框,则希望隐藏从20到26的行
  • 如果未选中“A27”复选框,则希望隐藏从28到37的行
  • 选中该复选框后,您希望显示行
  • 您希望通过使用带有Google Apps脚本的OnEdit事件触发器实现上述功能
如果我的理解是正确的,那么这个修改如何?请把它看作是几个答案中的一个

发件人: 致: 如果我误解了你的问题,而这不是你想要的结果,我道歉