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

标签 csv google-apps-script google-sheets

我一直在尝试将多个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); 
    }
  }      
}

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

最佳答案

这是我的解决方案:

  • 涉及使用 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);
    
    
    
      }      
    }
    

    我假设您必须从这里获得了原始代码的想法-Merge multiple tabs, download as CSV

    我从这篇文章here找到了灵感。

    关于csv - 在gdrive上的单个文件中合并多个CSV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58203308/

    相关文章:

    ruby-on-rails - Rails API : params' tempfile contains null bites from upload and fails to read, 但如果在本地抓取则读取正常

    google-apps-script - 输出其他内容类型;除了带有 Apps 脚本的 HTML

    javascript - Google Sheet 自定义函数返回 0

    javascript - 在运行时使用 GAS 调整 HTML 模态的大小

    google-sheets - 使用 FILTER 在 COUNTA 上错误返回 1

    MySQL 一行导出到 CSV,没有标题

    r - 数据表读取功能

    google-apps-script - SpreadsheetApp.getActiveSpreadsheet() 请求访问 Google 上的数据

    javascript - 访问 strg 名称为数字的对象

    c# - Azure存储找不到csv文件