Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 按条件筛选主数据_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 按条件筛选主数据

Google apps script 按条件筛选主数据,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我创建了一个代码,将不同的g工作表文件合并到给定文件夹中的主电子表格中。现在我想在代码中创建一个过滤器,它只过滤第71列(BT)中的标准“ABC”,并将数据合并到一个标准中。你们能帮个兄弟吗 function myFunction() { var folder = DriveApp.getFolderById("id"); var filesInterator = folder.getFiles(); var file;

我创建了一个代码,将不同的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;

    }

您可以添加以下代码行:

let filterCriteria = SpreadsheetApp
    .newFilterCriteria()
    .whenTextContains("ABC")
    .build();
let filter = ws.getRange(1, 71).createFilter();
filter.setColumnFilterCriteria(71, filterCriteria).sort(71, true);
假设
ws
是您的工作表,并且当文本包含“ABC”时,您要查找的标准是
,那么上面的代码片段将在
BT1
单元格的
ws
工作表上创建一个过滤器

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

参考文献
  • )

  • )


@MetaMan,你对我的上一篇文章非常有帮助,也许这次你也知道如何对代码进行一些调整?非常感谢你帮助我解决这个问题,你真的让我开心极了!如果您不介意的话,还有一个问题,您是否知道如何修改上述代码,以便在将文件夹中的电子表格合并到主控表格之前,根据第71列(tekst“ABC”)中的标准进行检查,然后仅将相关行的文件放在一起。