使用 Google Apps Script 将 .CSV 文件数据复制到 Google 表格

Mad*_*amb 0 csv google-sheets google-apps-script

我需要遍历源文件夹中的每个 .CSV 文件,并将每个文件中的数据复制到一个 Google Sheets 文件中的新工作表/标签中。我找到了一些与此主题相关的答案,但是我在两个代码集上都遇到了错误。这是我试图从中构建解决方案的代码:

function appendCSV() {  
    var file = DriveApp.getFilesByName("myCSVFile.csv").next(); 
    var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var lastRow=sheet.getLastRow(); 
    sheet.getRange(lastRow, 1, csvData.length, csvData[0].length).setValues(csvData);
}
Run Code Online (Sandbox Code Playgroud)

这是我遇到的第一个错误:

无法检索下一个对象:迭代器已结束。(第 2 行,文件“代码”)

我可以.next()从第 2 行删除该方法,然后出现另一个错误:

类型错误:在对象 FileIterator 中找不到函数 getBlob。(第 3 行,文件“代码”)

任何人都可以确定这里可能出了什么问题吗?

Coo*_*per 5

您需要提供电子表格 ID 和文件夹 ID。此外,您可能希望更改创建的工作表/选项卡的工作表名称。

function loadCSVFilesIntoSheets() { 
  var ss=SpreadsheetApp.openById('SpreadsheetId')
  var folder=DriveApp.getFolderById('folderId');
  var files=folder.getFilesByType(MimeType.CSV);
  while(files.hasNext()) {
    var file=files.next();
    var vA=Utilities.parseCsv(file.getBlob().getDataAsString());
    var ts=Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"MM/dd/yy HH:mm:ss")
    var sh=ss.insertSheet(file.getName()+'-'+ts);
    sh.getRange(1,1,vA.length,vA[0].length).setValues(vA);
  }
}
Run Code Online (Sandbox Code Playgroud)

获取电子表格 ID: https://docs.google.com/spreadsheets/d/SpreadsheetIdHere/edit#gid=1655026329

文件夹 ID: https://drive.google.com/drive/folders/folder id here

驱动程序

Utilities.parseCsv()

Utilities.formatDate()