复选框隐藏列的脚本

Script for Checkboxes hidind columns

我在名为“设置”的 Sheet 上有 2 列复选框。每个未选中的复选框都必须隐藏一组特定的“ROAS”列 Sheet。

复选框位置:

第一列复选框

复选框的第二列

@Tanaike 这里已经为第一列复选框编写了这个脚本,你能帮我修改它以集成第二列复选框吗?

function onEdit(e) {
  const obj = {};
  let r = 4;
  let c = 6;
  for (let i = 1; i <= 10; i++) {
    obj[`B${r++}`] = [c, 3];
    c += 3;
  }
  var spreadsheet = e.source;
  var range = e.range;
  var a1Notation = range.getA1Notation();
  if (spreadsheet.getSheetName() == 'Settings' && Object.keys(obj).includes(a1Notation)) {
    spreadsheet.getSheetByName('ROAS')[range.isChecked() ? "showColumns" : "hideColumns"](...obj[a1Notation]);
  }
}

非常感谢

对于复选框的第二列,您可以添加一个额外的 for 循环以及另外两个变量(本例中为 rTwo 和 cTwo)。

function onEdit(e) {
  const obj = {};
  let r = 4;
  let c = 6;
  let rTwo = 2;
  let cTwo = 2;
  for (let i = 1; i <= 10; i++) {
    obj[`B${r++}`] = [c, 3];
    c += 3;
  }
  for (let j = 1; j <= 4; j++) {
    obj[`G${rTwo++}`] = [cTwo, 1];
    cTwo += 1;
  }
  var spreadsheet = e.source;
  var range = e.range;
  var a1Notation = range.getA1Notation();
  if (spreadsheet.getSheetName() == 'Settings' && Object.keys(obj).includes(a1Notation)) {
    spreadsheet.getSheetByName('ROAS')[range.isChecked() ? "showColumns" : "hideColumns"](...obj[a1Notation]);
  }
}

第二个 for 循环是必要的,因为第二列复选框要隐藏的列数不同。

我还使用设置 sheet 的设置测试了脚本,如下所示:

我得到 ROAS sheet 以显示以下内容: