在gdrive上的单个文件中合并多个CSV文件

Agh*_*han 3 csv google-sheets google-apps-script

我一直在尝试将多个csv文件从Google驱动器文件夹合并到单个csv文件中,但是我无法做到这一点,因为它可以很好地与Google表格配合使用,但不适用于csv文件。

我使用了stackoverflow.com上已经可用的代码,但是它不能很好地满足我的要求。

function mergeSheets() {

  /* Retrieve the desired folder */
  var myFolder = DriveApp.getFoldersByName("Test 1").next();

  /* Get all spreadsheets that resided on that folder */
  var spreadSheets = myFolder.getFilesByType("MimeType.csv");

  /* Create the new spreadsheet that you store other sheets */  
  var newSpreadSheet = SpreadsheetApp.create("Merged Sheets");

  /* Iterate over the spreadsheets over the folder */
  while(spreadSheets.hasNext()) {

    var sheet = spreadSheets.next();

    /* Open the spreadsheet */
    var spreadSheet = SpreadsheetApp.openById(sheet.getId());

    /* Get all its sheets */
    for(var y in spreadSheet.getSheets()) {

      /* Copy the sheet to the new merged Spread Sheet */
      spreadSheet.getSheets()[y].copyTo(newSpreadSheet); 
    }
  }      
}
Run Code Online (Sandbox Code Playgroud)

它确实创建了一个新工作表,但没有任何csv数据。

Sou*_*ria 5

这是我的解决方案:

  • 涉及使用MimeType.CSV(OP仅需避免使用引号)
  • 涉及将一个csv中的行添加到新的电子表格中,而不是一遍又一遍地遍历行

尝试这个 -

function mergeSheets() {

  /* Retrieve the desired folder */
  var myFolder = DriveApp.getFoldersByName("Test 1").next();

  /* Get all spreadsheets that resided on that folder */
  var spreadSheets = myFolder.getFilesByType(MimeType.CSV);

  /* Create the new spreadsheet that you store other sheets */  
  var newSpreadSheet = SpreadsheetApp.create("Merged Sheets");

  /* Iterate over the spreadsheets over the folder */
  while(spreadSheets.hasNext()) {

    var sheet = spreadSheets.next();


    var file = DriveApp.getFileById(sheet.getId());
    var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
    var newSheet = newSpreadSheet.getActiveSheet();
    newSheet.getRange(newSpreadSheet.getLastRow() + 1, newSpreadSheet.getLastColumn()+1, csvData.length, csvData[0].length).setValues(csvData);



  }      
}
Run Code Online (Sandbox Code Playgroud)

我假设您一定是从这里获得了原始代码的想法- 合并多个标签,以CSV格式下载

我发现我的灵感来自这篇文章在这里