checkbox - Google 表格 - 当复选框放置在大范围内的特定单元格中时,只允许选中一个复选框

标签 checkbox google-sheets

我需要一个简单的 Google 表格脚本,以便一次只选中 6 个复选框中的一个。最终用户将选中一个复选框,并且在他们选中新复选框时应该看到他们之前选中的复选框变为未选中或 FALSE。对于像我这样的新手来说,“问题”是复选框的位置不对称。它们位于单元格 D14、D30、J14、J32、P14 和 P30 中。我还需要多次复制此工作表,因此脚本最好适用于我以相同方式制作的任何副本。单元格将始终是每张工作表中的这六个单元格。

我看过很多关于这个主题的帖子,并尝试使用示例脚本来解决我的问题但没有成功,所以我想具体询问一下我的电子表格。

这是我的工作表草稿版本的链接,其中包含复选框的位置:

https://docs.google.com/spreadsheets/d/1PtxetS-Gyv7LyMD19yF3NuWZ24RvqUjyK42SmQTttiU/edit?usp=sharing

谢谢, 拉西

最佳答案

您可以设置一个 onEdit()触发将:

  1. 检查编辑的单元格是否为复选框(通过验证其范围)。

  2. 检查单元格的新值是否为 TRUE(复选框已启用)。

  3. 如果 12 都适用,请取消设置同一张表中定义的其余复选框。

请注意,脚本的执行速度可能会有点慢(由于 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/

相关文章:

javascript - 使用 .getValues 检索时,Google 工作表正在更改单元格值的格式

google-apps-script - 日历应用程序事件 ID

javascript - Angular 1 : check all check boxes in a large ng-repeat

php - PHP 帮助下的动态复选框

java - 无法打开使用 jOpenDocument 创建的 ODS 文档 Google 文档

javascript - 使用谷歌应用程序脚本删除谷歌表格中的所有过滤器

google-sheets - 计算Google表格中每第n行单元格中出现的次数

WPF 工具包 DataGrid 复选框问题

PHP代码用于使用选择形式将复选框值插入到mysql上的特定列中

jquery - 带有空标签的 Font Awesome CSS 复选框