按条件过滤主数据

时间:2021-04-27 10:21:10

标签: google-apps-script google-sheets

我创建了一个代码,它将不同的 g 工作表文件合并到一个给定文件夹中的主电子表格中。现在我想在代码中创建一个过滤器,它只过滤第 71 列(BT)的标准“ABC”并将数据合并为一个。你们会帮助兄弟吗?

     function myFunction() {

     var folder = DriveApp.getFolderById("id");

     var filesInterator = folder.getFiles();


     var file;
     var fileType;
     var ssID;
     var combinedData = [];
     var data;


     while(filesInterator.hasNext()){
     file = filesInterator.next();
    fileType = file.getMimeType();
    if(fileType === "application/vnd.google-apps.spreadsheet"){
    ssID = file.getId();
    data = getDataFromSpreadsheet(ssID);
    combinedData = combinedData.concat(data);

    } // if ends here
    }  // while loops ends here

    //Logger.log(combinedData.length);

    var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("QwERTY");
    ws.getRange("A2:BK").clearContent();
    ws.getRange(2,1,combinedData.length,combinedData[0].length).setValues(combinedData);

    }

    function getDataFromSpreadsheet(ssID) {

    var ss = SpreadsheetApp.openById(ssID);
    var ws = ss.getSheetByName("XYZ");
    var data = ws.getRange("A2:KB" + ws.getLastRow()).getValues().filter(r => r[0] != '');

    return data;

    }

1 个答案:

答案 0 :(得分:1)

您可以添加以下代码行:

let filterCriteria = SpreadsheetApp
    .newFilterCriteria()
    .whenTextContains("ABC")
    .build();
let filter = ws.getRange(1, 71).createFilter();
filter.setColumnFilterCriteria(71, filterCriteria).sort(71, true);

假设 ws 是您的工作表,而您要查找的条件是 when text contains "ABC",那么上面的代码段将在 ws 表上的 BT1 表上创建过滤器1}} 个单元格。

但是,请记住,根据过滤器的确切标准,您可以通过查看 FilterCriteriaBuilderhere 的可用方法来修改当前过滤器。

参考

相关问题