Google脚本-根据另一个工作表上的复选框隐藏/取消隐藏Google工作表

时间:2019-06-26 15:16:00

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

我很确定我在代码中做错了什么,以至于为什么它不能按照我想要的方式运行。首先,这是代码:

function onEdit(a) {

var sheet = a.source.getActiveSheet();
var aa = SpreadsheetApp.getActiveSpreadsheet();
var COMP = aa.getSheetByName("COMP");
var COMPcell = sheet.getRange('B6').getValue();
if(COMPcell = 'TRUE'){COMP.showSheet();}else{COMP.hideSheet();}
}

在这里,我在“活动表”的单元格B6上有一个复选框(名为“每月摘要”)。选中时(因此值为TRUE),我希望显示名为“ COMP”的工作表。否则,应将其隐藏。我不太擅长编码,我已经研究了上面的公式并根据需要对其进行了修改,但是我无法使其正常工作。

任何对此的见解将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

  • 仅当选中“ B6”复选框时,才想显示COMP的工作表。
  • 当未选中“ B6”复选框时,您想隐藏COMP的工作表。

如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。

修改后的脚本1:

如果修改了脚本,则在脚本中,不比较if语句的COMPcell = 'TRUE'的值。在这种情况下,请修改为COMPcell === true。修改后的脚本反映了这一点,如下所示。

function onEdit(a) {
  var sheet = a.source.getActiveSheet();
  var aa = SpreadsheetApp.getActiveSpreadsheet();
  var COMP = aa.getSheetByName("COMP");
  var COMPcell = sheet.getRange('B6').getValue();
  if (COMPcell === true) { // Modified
    COMP.showSheet();
  } else {
    COMP.hideSheet();
  }
}

修改后的脚本2:

使用事件对象和isChecked()时,还可以如下修改脚本。在此脚本中,仅当编辑“ B6”复选框时,脚本才起作用。

function onEdit(a) {
  var range = a.range;
  if (range.getA1Notation() == "B6") {
    var COMP = a.source.getSheetByName("COMP");
    if (range.isChecked()) {
      COMP.showSheet();
    } else {
      COMP.hideSheet();
    }
  }
}

参考文献: