删除因过滤器而隐藏的行

Delete rows hidden due to filter

我需要帮助删除因用户过滤器而隐藏的行。

我创建了一个虚拟 sheet,数据链接如下。 我想要的是:当我在 sheet 1 中删除一行时,应该在 sheet 2 中删除同一行。 (在实际传播中sheet,sheet 1 是表单条目,使用数组公式将其复制到sheet 2 进行数据操作。

当我使用公式时,该行在 sheet 1 中被删除,但是在 sheet 2 中它没有被删除,因为它由于用户设置的过滤器而被隐藏。

我通过移除过滤器对此进行了测试并且它有效。我需要找到一种方法来删除行而不必删除过滤器。请在下面找到工作文件和代码片段。

Google传播sheet:https://docs.google.com/spreadsheets/d/1uiJzzJ9TvsJBLT6_i1S3JbXAi0zUl8wvk1uuIZ9_LdA/edit?usp=sharing

function deleteRow() {

    var sheet = SpreadsheetApp.getActiveSheet();
    var sheetName = sheet.getName();
    
    if(sheetName == "Sheet 1"){
    var eocDataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet 2")
    var rowPos = sheet.getActiveRange().getRow();
    var numRows = sheet.getActiveRange().getNumRows();

    eocDataSheet.deleteRows(rowPos, numRows);
    sheet.deleteRows(rowPos, numRows);
    }
      
}

恐怕您必须获取所有过滤的行,检查您要删除的行是否与过滤的行相交,获取现有过滤器,暂时取消过滤,删除有问题的行,然后重新应用以前的过滤器。

如何获取所有过滤的行

参见this example page小节获取筛选行

如何获取现有过滤器

参见 .getColumnFilterCriteria() here