我有一个最初由本·柯林斯 (Ben Collins) 编写的脚本,我对其进行了修改以满足我的需要。此脚本取消选中编辑指定范围内的另一个复选框的框。当复选框位于单元格 B5:D5 中时,该脚本运行良好。请参阅下面的脚本:
/**
* onEdit to uncheck checkboxes as required
*/
function onMySecondEdit(e) {
// get event object data: sheet name, row number and column number
const sheet = e.range.getSheet();
const row = e.range.rowStart;
const col = e.range.columnStart;
// Row 5, Columns 2 through 4
if (e.range.rowStart > 4 || e.range.rowStart < 6 || e.range.colStart > 1 || e.range.colStart < 5 ) {
switch(col) {
// case when column B is checked
case 2:
sheet.getRange("C" + row + ":D" + row).uncheck();
break;
// case when column C is checked
case 3:
sheet.getRangeList(["B" + row,"D" + row]).uncheck();
break;
// case when column D is checked
case 4:
sheet.getRange("B" + row + ":C" + row).uncheck();
break;
// cell is outside of columns B to D
default:
return;
}
}
}
我onEdit
安装了一个简单的触发器来运行此脚本。效果很好。但是,当我尝试复制此脚本,将范围更改为 K12:M12 时,复选框不再像单选按钮那样起作用。我仔细检查了它,编辑并重新编辑,试图找出代码中的错误所在,但无法弄清楚。
这是修改后的脚本。我在这个中使用 onEdit() 但也尝试了一个简单的触发器。
/**
* onEdit to uncheck checkboxes as required
*/
function onEdit(e) {
// get event object data: sheet name, row number and column number
const sheet = e.range.getSheet();
const row = e.range.rowStart;
const col = e.range.columnStart;
// Row 12, Columns 11 through 13
if (e.range.rowStart > 11 || e.range.rowStart < 13 || e.range.colStart > 10 || e.range.colStart < 14 ) {
switch(col) {
// case when column K is checked
case 2:
sheet.getRange("L" + row + ":M" + row).uncheck();
break;
// case when column L is checked
case 3:
sheet.getRangeList(["K" + row,"M" + row]).uncheck();
break;
// case when column M is checked
case 4:
sheet.getRange("K" + row + ":L" + row).uncheck();
break;
// cell is outside of columns K to M
default:
return;
}
}
}
这是我的电子表格的屏幕截图:
我怀疑我做错了一些小事,我只需要第二双眼睛来检查并找出错误。我知道这里还有其他有关复选框和单选按钮的帮助请求,但我只是想知道我在这个特定脚本中犯了什么错误。
它没有按您的脚本预期工作,因为 switch 语句中指定的列数读取了错误的列号。
在下面的脚本中,表达式 is
col
指的是列数。该列的值与每个案例的值进行比较。我将案例编号更改为 K、L、M 的相应列号。参考:
转变