-1
const ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Potential Matrix");
  const rg=ss.getDataRange();
  const vs=rg.getValues();
  let d=0;
  vs.forEach(function(r,i){
    if(r.join('').length==0 || r.join('')=='false') {
      ss.deleteRow(i+1-d++);
    }
  });
  ss.insertRowBefore(1).getRange("1:1").clearFormat(); 

嗨@Cooper,感谢您提供的代码。不幸的是,它似乎没有将数字 12、13 和 14 之间的行计算为空白,因此不会删除它们。你给我的原始脚本在我没有复选框时工作,但现在有复选框它不起作用。有没有办法删除行,包括未勾选/勾选的复选框和非复选框的列的空数据?我在原始帖子中添加了“新图片供参考”以说明我的意思;

新图片供参考

4

1 回答 1

0

如何检查您的数据是否包含复选框

  • Apps 脚本具有方法isChecked()来查询复选框是否已被选中。
  • 您可以使用此方法来查询一个单元格是否包含一个复选框:
    • 如果单元格是一个复选框并被选中 -isChecked()将返回true
    • 如果单元格是一个复选框而不是 -isChecked()将返回false
    • 如果单元格根本不是复选框 -isChecked()将返回null

不幸的是,从您的问题中我无法理解我们的确切问题,但我希望以下示例对您有所帮助作为参考:它检查一行是否包含复选框,如果找到至少一个复选框 - 将删除该行:

  const ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Potential Matrix");
  var row = 5;
  var lastColumn = ss.getLastColumn();
  var rg=ss.getRange(5,1,1, lastColumn);
  for (var i =0; i < lastColumn; i++){
    var checked = rg.getCell(1, (i+1)).isChecked();
    Logger.log(checked);
    if (checked != null){
      ss.deleteRow(row);
      return;
    }
  }
于 2020-05-11T13:52:50.460 回答