我需要一个简单的 Google 表格脚本,以便一次只选中 6 个复选框中的一个。最终用户将选中一个复选框,并且在他们选中新复选框时应该看到他们之前选中的复选框变为未选中或 FALSE。对于像我这样的新手来说,“问题”是复选框的位置不对称。它们位于单元格 D14、D30、J14、J32、P14 和 P30 中。我还需要多次复制此工作表,因此脚本最好适用于我以相同方式制作的任何副本。单元格将始终是每张工作表中的这六个单元格。
我看过很多关于这个主题的帖子,并尝试使用示例脚本来解决我的问题但没有成功,所以我想具体询问一下我的电子表格。
这是我的工作表草稿版本的链接,其中包含复选框的位置:
https://docs.google.com/spreadsheets/d/1PtxetS-Gyv7LyMD19yF3NuWZ24RvqUjyK42SmQTttiU/edit?usp=sharing
谢谢, 拉西
最佳答案
您可以设置一个 onEdit()
触发将:
检查编辑的单元格是否为复选框(通过验证其范围)。
检查单元格的新值是否为
TRUE
(复选框已启用)。如果
1
和2
都适用,请取消设置同一张表中定义的其余复选框。
请注意,脚本的执行速度可能会有点慢(由于 Google Apps 脚本的限制),并且该脚本将独立运行于您工作簿中的每个表格。
代码
var CHECKBOX_CELLS = ["D14", "J14", "P14", "D30", "J32", "P30"];
function onEdit(e) {
var range = e.range;
var checkboxIndex = CHECKBOX_CELLS.indexOf(range.getA1Notation());
if (checkboxIndex > -1 && range.getValue() == true) {
var sheet = range.getSheet();
for (var i=0; i<CHECKBOX_CELLS.length; i++) {
if (i==checkboxIndex) continue;
sheet.getRange(CHECKBOX_CELLS[i]).setValue(false);
}
}
}
关于checkbox - Google 表格 - 当复选框放置在大范围内的特定单元格中时,只允许选中一个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59645170/