复选框/取消复选框 Google Apps 脚本 Google 表格 [关闭]

Posted

技术标签:

【中文标题】复选框/取消复选框 Google Apps 脚本 Google 表格 [关闭]【英文标题】:Check Boxes/ Uncheck Boxes Google Appscript Google Sheets [closed] 【发布时间】: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');
   

【问题讨论】:

【参考方案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。希望这是有道理的。 好的,我已经更新了答案 谢谢迈克。这正是我想要的效果,现在我可以相应地使用和调整。

以上是关于复选框/取消复选框 Google Apps 脚本 Google 表格 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Google Apps Script e.namedValues 格式多项选择

数据验证生成器中的必需复选框

取消选中后,Google云端存储公共链接不会失效

如果 AJAX 错误,请取消选中复选框 [重复]

Javascript 检查/取消选中所有复选框并将值写入 textarea

如何将 Google OAuth 同意屏幕配置为不显示复选框?