gpt4 book ai didi

google-apps-script - 列出谷歌驱动器中的所有文件和文件夹

转载 作者:行者123 更新时间:2023-12-03 20:28:47 30 4
gpt4 key购买 nike

我一直试图弄清楚这一点。我希望我能在这方面得到一些指导。以下脚本的目的是获取包含子文件夹及其文件的文件夹和文件的完整列表。

这是我目前拥有的:

  var counter = 0

var files = folder.getFiles();
var subfolders = folder.getFolders();
var folderPath = folder.getName();

while (subfolders.hasNext()){
subfolder = subfolders.next();
var row = [];
//row.push(subfolder.getName(),'',subfolder.getId(),subfolder.getUrl(),subfolder.getSize(),subfolder.getDateCreated(),subfolder.getLastUpdated());
//list.push(row);
if(counter > 0){
var files = subfolder.getFiles();
}

while (files.hasNext()){
file = files.next();
var vals = file.getUrl();
var row = [];
if(counter == 0){
row.push(folder.getName(),file.getName(),file.getId(),file.getUrl(),file.getSize(),file.getDateCreated(),file.getLastUpdated())
}else{
row.push(folderPath + '/' + subfolder.getName(),file.getName(),file.getId(),file.getUrl(),file.getSize(),file.getDateCreated(),file.getLastUpdated())
}
list.push(row);
}
counter = counter + 1
}

它当前获取当前文件夹及其子文件夹的文件夹名称和文件名。没有比这更进一步的了。我一直在想办法让循环继续下去,直到没有更多的子文件夹。

这不是一个很大的驱动器。有不到 10 个级别,但如果需要,希望能够灵活地进一步发展。

最佳答案

Recursion在这种情况下是有益的。下面的代码调用递归方法recurseFolder()它以 Folder 和 Array 作为参数。它将文件夹中的所有文件添加到一个列表中,然后在它找到的任何子文件夹上调用自己。

function test(){
var root = DriveApp.getRootFolder();
var list = [];

var list = recurseFolder(root, list);
Logger.log(JSON.stringify(list));

//This is just how I am testing the outputed list. You can do what you need.
var sheet = SpreadsheetApp.getActiveSheet();
list.forEach(function (row){
sheet.appendRow(row);
});
}

function recurseFolder(folder, list){
var files = folder.getFiles();
var subfolders = folder.getFolders();

while (files.hasNext()){ //add all the files to our list first.
var file = files.next();
var row = [];
Logger.log("File: " + folder.getName());
row.push(folder.getName(),file.getName(),file.getId(),file.getUrl(),file.getSize(),file.getDateCreated(),file.getLastUpdated())
list.push(row);
}


while (subfolders.hasNext()){ //Recurse through child folders.
subfolder = subfolders.next();
Logger.log("Folder: " + subfolder.getName());
list = recurseFolder(subfolder, list); //Past the original list in so it stays a 2D Array suitible for inserting into a range.
}

return list;
}

我不确定输出的格式是否符合您的预期,因此您可能需要稍微尝试一下。注意:如果在更大的驱动器上运行,它很容易超时。

关于google-apps-script - 列出谷歌驱动器中的所有文件和文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54912207/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com