【问题标题】:Deleting rows in between numbers and delete checkbox rows删除数字之间的行并删除复选框行
【发布时间】:2020-08-26 00:49:22
【问题描述】:
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 之间的行计算为空白,因此不会删除它们。你给我的原始脚本在我没有复选框时工作,但现在有复选框它不起作用。有没有办法删除行,包括未勾选/勾选的复选框和非复选框的列的空数据?我在原始帖子中添加了“新图片供参考”以说明我的意思;

New Picture for reference

【问题讨论】:

  • 你有没有做过什么来了解代码的作用并试图修改它? SO 不是免费的编码服务。见meta.stackoverflow.com/questions/261592
  • 请告诉我这些行的r.join() 是什么。
  • 嗨,是的,我已经从头开始为一个基本表创建了代码,并且已经学会了如何构建数据验证并将复选框插入到代码中。据我了解,这些行的 'r.join()' 正在搜索 '(' ')' (等于空白数据)。所以代码正在搜索空白数据,如果为真则删除行。我不知道如何调整代码以搜索行中的复选框,这就是我需要帮助的原因,我无意将其用作免费的编码服务,我很高兴学习并能够理解它。跨度>

标签: google-apps-script google-sheets rowdeleting


【解决方案1】:

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

  • Apps Script 提供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;
    }
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2014-04-02
    相关资源
    最近更新 更多