End*_*Lol 3 javascript checkbox google-sheets google-apps-script
因此,我尝试在 Google Sheets 上制作登录/注册表单,我有两个复选框,一个表示登录,另一个表示注册。在我的应用程序脚本中,我试图使其只能检查其中之一。这是我的代码,它不起作用。帮助?
function signupLogin() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  if (sheet.getRange('A13').isChecked() === 'TRUE') {
    sheet.getRange('B13').setValue('FALSE');
  } else {
    sheet.getRange('B13').setValue('TRUE'); 
  }
}
Run Code Online (Sandbox Code Playgroud)
即使第一个复选框被选中,代码也始终会选中第二个复选框。
当您选中A13或B13其他单元格将自动取消选中。
因此,我认为onEdit()解决方案就是您正在寻找的:
function onEdit(e) {
  
  const as = e.source.getActiveSheet();
  const cell = e.range.getA1Notation();
  const cell_checks = ['A13','B13'];
  if(as.getName() == "Sheet1" && cell_checks.includes(cell) && e.range.isChecked())
  {cell_checks.filter(val=>val!=cell).forEach(c=>as.getRange(c).uncheck())}  
}
Run Code Online (Sandbox Code Playgroud)
要使用此解决方案,只需将上述代码保存到脚本编辑器中,然后每次单击Sheet1(根据需要修改名称)中的复选框时,其余复选框将被取消选中。
该代码也是可扩展的。也就是说,如果您想要有多个复选框,并且当您单击其中一个复选框时,其余的将变为未选中状态。您可以在此处定义复选框列表:
 const cell_checks = ['A13','B13'];
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           13988 次  |  
        
|   最近记录:  |