【问题标题】:Google Sheets - Allow only one checkbox to be checked when the boxes are placed in specific cells across a wide range谷歌表格 - 当框被放置在广泛的特定单元格中时,只允许选中一个复选框
【发布时间】:2020-01-08 11:45:13
【问题描述】:

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

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

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

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

谢谢你, 拉西

【问题讨论】:

    标签: checkbox google-sheets


    【解决方案1】:

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

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

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

    3. 如果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);
        }
      }
    }
    

    【讨论】:

    • @LassiKirstua 不用担心! :) 请考虑upvoting/accepting,以防我的回答对您有用。祝你有美好的一天!
    猜你喜欢
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2016-05-22
    • 2013-07-14
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多