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数据。
这是我的解决方案:
尝试这个 -
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格式下载
我发现我的灵感来自这篇文章在这里。