【发布时间】:2020-01-18 11:41:51
【问题描述】:
我刚刚启动了 Google 应用程序脚本。我有一个包含不同子文件夹的文件夹,每个子文件夹都包含至少一个 csv 文件。现在我想从这些子文件夹中提取所有这些文件并合并到一个谷歌表中。我有一个函数可以遍历所有子目录并列出所有子文件夹,还有一个函数可以合并单个文件夹中存在的 csv 文件。现在有什么方法可以组合这些功能并获得所需的结果。任何帮助,将不胜感激。谢谢
//////////////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();
}
}
【问题讨论】:
标签: javascript csv google-apps-script