复选框隐藏列的脚本
Script for Checkboxes hidind columns
我在名为“设置”的 Sheet 上有 2 列复选框。每个未选中的复选框都必须隐藏一组特定的“ROAS”列 Sheet。
复选框位置:
第一列复选框
- B4:选中 = 在 'ROAS' 上显示 F、G、H 列/未选中:隐藏 F、G、H 列
- B5:选中 = 在 'ROAS' 上显示 I、J、K 列/未选中:隐藏 I、J、K 列
- B6:选中 = 在 'ROAS' 上显示 L、M、N 列/未选中:隐藏 L、M、N 列
- B7:选中 = 在 'ROAS' 上显示 O、P、Q 列/未选中:隐藏 O、P、Q 列
- B8:选中 = 在 'ROAS' 上显示 R、S、T 列/未选中:隐藏 R、S、T 列
- B9:选中 = 在 'ROAS' 上显示 U、V、W 列/未选中:隐藏 U、V、W 列
- B10:选中 = 在 'ROAS' 上显示 X、Y、Z 列/未选中:隐藏 X、Y、Z 列
- B11:选中 = 在 'ROAS' 上显示 AA、AB、AC 列/未选中:隐藏 AA、AB、AC 列
- B12:选中 = 在 'ROAS' 上显示 X、Y、Z 列/未选中:隐藏 X、Y、Z 列
- B13:选中 = 在 'ROAS' 上显示 AD、AE、AF 列/未选中:隐藏 AD、AE、AF 列
复选框的第二列
- G2:选中 = 在 'ROAS' 上显示 B 列/未选中:隐藏 B 列
- G3:选中 = 在 'ROAS' 上显示列 C / 未选中:隐藏列 C
- G4:选中 = 在 'ROAS' 上显示列 D / 未选中:隐藏列 D
- G5:选中 = 在 'ROAS' 上显示列 E / 未选中:隐藏列 E
@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 以显示以下内容:
我在名为“设置”的 Sheet 上有 2 列复选框。每个未选中的复选框都必须隐藏一组特定的“ROAS”列 Sheet。
复选框位置:
第一列复选框
- B4:选中 = 在 'ROAS' 上显示 F、G、H 列/未选中:隐藏 F、G、H 列
- B5:选中 = 在 'ROAS' 上显示 I、J、K 列/未选中:隐藏 I、J、K 列
- B6:选中 = 在 'ROAS' 上显示 L、M、N 列/未选中:隐藏 L、M、N 列
- B7:选中 = 在 'ROAS' 上显示 O、P、Q 列/未选中:隐藏 O、P、Q 列
- B8:选中 = 在 'ROAS' 上显示 R、S、T 列/未选中:隐藏 R、S、T 列
- B9:选中 = 在 'ROAS' 上显示 U、V、W 列/未选中:隐藏 U、V、W 列
- B10:选中 = 在 'ROAS' 上显示 X、Y、Z 列/未选中:隐藏 X、Y、Z 列
- B11:选中 = 在 'ROAS' 上显示 AA、AB、AC 列/未选中:隐藏 AA、AB、AC 列
- B12:选中 = 在 'ROAS' 上显示 X、Y、Z 列/未选中:隐藏 X、Y、Z 列
- B13:选中 = 在 'ROAS' 上显示 AD、AE、AF 列/未选中:隐藏 AD、AE、AF 列
复选框的第二列
- G2:选中 = 在 'ROAS' 上显示 B 列/未选中:隐藏 B 列
- G3:选中 = 在 'ROAS' 上显示列 C / 未选中:隐藏列 C
- G4:选中 = 在 'ROAS' 上显示列 D / 未选中:隐藏列 D
- G5:选中 = 在 'ROAS' 上显示列 E / 未选中:隐藏列 E
@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 以显示以下内容: