I have just started Google Application Script. I have a folder which has different sub folders and every sub folder contains atleast one csv file. Now i want to extract all of those files from these sub folders and merge into single google sheet. I have one function that iterates through all sub directories and list all the sub folders and one function that merge csv files which are present in single folder. Now is there any way that we can combine these functions and get the desired result. Any help would be appreciated. Thank you
//////////////Merge all csv files in a Folder/////////////////////
function mergeSheets() {
/* Retrieve the desired folder */
var myFolder = DriveApp.getFoldersByName("Apr_05_2013").next();
/* Get all spreadsheets that resided on that folder */
var spreadSheets = myFolder.getFilesByType("text/csv");
if (spreadSheets.hasNext()) {
/* Create the new spreadsheet that you store other sheets */
var newSpreadSheet = SpreadsheetApp.create("Merged Sheets");
var newSheet = newSpreadSheet.insertSheet("import_");
/* Iterate over the spreadsheets over the folder */
while(spreadSheets.hasNext()) {
var sheet = spreadSheets.next();
/* Load the csv data */
var csvData = Utilities.parseCsv(sheet.getBlob().getDataAsString(), ",");
/* Copy the sheet to the new merged Spread Sheet */
for (var i=0;i<csvData.length;i++) {
newSheet.appendRow(csvData[i]);
}
}
}
}
/////////////////**List all Sub folders which a folder contains**///////////////////////////
function genFolderTree() {
try {
var foldername = 'File2013';
var folderlisting = 'TreeView_' + foldername;
var parentFolder = DriveApp.getFoldersByName(foldername).next();
var ss = SpreadsheetApp.create(folderlisting);
var sheet = ss.getActiveSheet();
var frontCell = [];
sheet.appendRow([foldername]).getCurrentCell().setFontWeight('bold').setFontColor('red');
frontCell.push(" ");
getChildNode(parentFolder,sheet,frontCell);
var files = parentFolder.getFiles();
while (files.hasNext()) {
frontCell.push(files.next().getName());
sheet.appendRow( frontCell);
frontCell.pop();
}
} catch (e) {
Logger.log(e.toString());
}
}
function getChildNode(parent,sheet,frontCell) {
var childFolders = parent.getFolders();
while (childFolders.hasNext()) {
var childFolder = childFolders.next();
frontCell.push(childFolder.getName())
sheet.appendRow(frontCell);
sheet.getRange(sheet.getLastRow(), frontCell.length).setFontWeight('bold').setFontColor('red');
frontCell.pop();
var files = childFolder.getFiles();
frontCell.push(" ");
var start_row = 0;
var row_no = 0;
while (files.hasNext()) {
frontCell.push(files.next().getName());
sheet.appendRow(frontCell);
if(row_no==0){
start_row = sheet.getLastRow();
}
row_no=row_no+1;
frontCell.pop();
}
if(row_no>0){
var range;
range = sheet.getRange(start_row, frontCell.length,row_no);
// The row grouping depth is increased by row_no.
range.shiftRowGroupDepth(1);
}
// Recursive call for any sub-folders
getChildNode(childFolder,sheet,frontCell);
frontCell.pop();
}
}
