我需要遍历源文件夹中的每个.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行,文件“代码”)
任何人都可以识别出这里出什么问题吗?
答案 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
答案 1 :(得分:1)
您遇到的第一个错误
无法检索下一个对象:迭代器已到达末尾。 (第2行,文件“代码”)
出现是因为显然没有名为myCSVFile.csv
var file = DriveApp.getFilesByName("myCSVFile.csv").next();
由于相同的原因,发生第二个错误。
首先,您应仔细检查文件名是否正确,以及该文件是否与运行脚本的帐户相同或拥有或共享。