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

时间:2020-02-01 19:59:21

标签: csv google-apps-script google-sheets

我需要遍历源文件夹中的每个.CSV文件,并将每个文件中的数据复制到一个Google表格文件中的新表格/标签中。我已经找到了与此主题相关的几个答案,但是两个代码集都出现错误。这是我尝试从中构建解决方案的代码:

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);
}

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

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

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

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

任何人都可以识别出这里出什么问题吗?

2 个答案:

答案 0 :(得分:4)

您需要提供电子表格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);
  }
}

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

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

DriveApp

Utilities.parseCsv()

Utilities.formatDate()

答案 1 :(得分:1)

您遇到的第一个错误

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

出现是因为显然没有名为myCSVFile.csv

的文件
var file = DriveApp.getFilesByName("myCSVFile.csv").next();

由于相同的原因,发生第二个错误。

首先,您应仔细检查文件名是否正确,以及该文件是否与运行脚本的帐户相同或拥有或共享。