Rob*_*ert 5 javascript google-apps-script google-drive-api
我想使用谷歌应用程序脚本遍历Google云端硬盘中文件夹的树形结构.下面的代码列出了一些文件夹,但不是全部.你能建议什么是深入研究文件夹结构的最佳技术吗?我想首先记录所有文件夹名称.
谢谢.
function test() {
listSubfolders(DriveApp.getFolderById('FOLDER_ID'));
}
function listSubfolders(parentFolder) {
var childFolders = parentFolder.getFolders();
while(childFolders.hasNext()) {
Logger.log(childFolders.next().getName());
listSubfolders(childFolders.next());
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
要访问子文件夹,您可以这样做,
function getSubFolders(parent) {
parent = parent.getId();
var childFolder = DriveApp.getFolderById(parent).getFolders();
while(childFolder.hasNext()) {
var child = childFolder.next();
Logger.log(child.getName());
getSubFolders(child);
}
return;
}
function listFolders() {
var parentFolder = DriveApp.getFolderById("0B1n6YLYwFmK_dUpzRWhDRXNwdWc");
var childFolders = parentFolder.getFolders();
while(childFolders.hasNext()) {
var child = childFolders.next();
Logger.log(child.getName());
getSubFolders(child);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
此 Google 脚本将生成包含所有文件和文件夹的 Google Drive 树。
将此脚本复制到您的脚本编辑器中。从“选择函数”菜单中选择函数“genFolderTree”。将根文件夹名称“RootDir”更改为函数 genFolderTree() 中的根目录
var foldername = 'RootDir';
Run Code Online (Sandbox Code Playgroud)
Google 脚本源代码 -
function genFolderTree() {
try {
var foldername = 'RootDir';
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();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以从Github 链接下载源代码