【问题标题】:Check Boxes/ Uncheck Boxes Google Appscript Google Sheets [closed]复选框/取消复选框 Google Apps 脚本 Google 表格 [关闭]
【发布时间】:2022-01-18 05:35:18
【问题描述】:

我只是在 Google Appsheet 中学习脚本,并复制了其他脚本,试图调整它们以切换我的复选框,但无法使其正常工作。有人可以帮我编写脚本吗? 从第 5 行开始的整列 J、L、N、P 一次只需要一个复选框选中“真”每行。 J、L、N、P 列第 4 行需要一个主复选框,用于选中或取消选中整个列。

我从 Ben's 开始,但无法对其进行编辑。 https://www.benlcollins.com/apps-script/radio-buttons-in-google-sheets/?unapproved=191483&moderation-hash=afecc2580f0b56c2ec9e26cdef4d1a99#comment-191483

这是我目前所拥有的,但它并没有完成整个列或所有主复选框。

function onEdit(e) {

  const as = e.source.getActiveSheet();
  const cell = e.range.getA1Notation();
  const cell_checks = ['J4','L4','N4','P4'];
  if(as.getName() == "MATERIAL LIST" && cell_checks.includes(cell) && 
e.range.isChecked())

{cell_checks.filter(val=>val!=cell).forEach(c=>as.getRange(c).uncheck())}

var spreadsheet = SpreadsheetApp.getActive();
   if (e.range.getA1Notation() == "J3") {
      spreadsheet.getRange('J4:J291').setValue('True');
   }
}

【问题讨论】:

    标签: google-apps-script google-sheets checkbox box


    【解决方案1】:

    如下修改你的脚本:

    function onEdit(e) {
      const as = e.source.getActiveSheet();
      const lastRow = as.getLastRow();
      const cell = e.range;
      const col_checks = ['J','L','N','P'];
      // master row
      if(as.getName() == "MATERIAL LIST" && cell.getRow()==4 && cell.isChecked()){
        as.getRange(5,cell.getColumn(),lastRow-4,1).setValue('TRUE')
        col_checks.filter(val=>(val+cell.getRow())!=cell.getA1Notation()).forEach(c=>as.getRange(c+cell.getRow()).offset(0,0,lastRow-3).uncheck())
      }
      // individual row
      if(as.getName() == "MATERIAL LIST" && cell.getRow()>4 && cell.isChecked()){
        col_checks.filter(val=>(val+cell.getRow())!=cell.getA1Notation()).forEach(c=>as.getRange(c+cell.getRow()).uncheck())
      }
    }
    

    【讨论】:

    • 谢谢迈克。这适用于整个列的主函数,但我仍然希望能够向下行并检查另一列并取消选中该列。一个例子是:在 J 中设置默认复选框,但需要将第 7 行设置为 L。因此,在选中所有 J 列后,我将单击第 7 行上的 L,然后取消选中 J7 并选中 L7。希望这是有道理的。
    • 好的,我已经更新了答案
    • 谢谢迈克。这正是我想要的效果,现在我可以相应地使用和调整。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2018-11-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 2022-11-02
    相关资源
    最近更新 更多