如何递归地列出从谷歌驱动器文件夹到电子表格的所有文件



我正在尝试将所有文件从谷歌驱动器文件夹递归地列表到电子表格,并按大小对文件列表进行排序(最大大小的文件应该在顶部(。我正面临脚本的问题

启动功能给出错误-ReferenceError: *****folder_id is not defined (Line 16)

function start() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();
sheet.appendRow(["Name", "Date", "Size", "URL", "Download", "Description", "Type", "Folder", "Folder Slug"]);
var folder = DriveApp.getFoldersById(FOLDER_ID);
if (folder.hasNext()) {
processFolder(folder);
} else {
Browser.msgBox('Folder not found!');
}

function processFolder(folder) {
while (folder.hasNext()) {
var f = folder.next();
var contents = f.getFiles();
addFilesToSheet(contents, f);
var subFolder = f.getFolders();
processFolder(subFolder);
}
}
function addFilesToSheet(files, folder) {
var data;
var folderName = folder.getName();
while (files.hasNext()) {
var file = files.next();
Logger.log(file.getName());
sheet.appendRow([
file.getName(),
file.getDateCreated(),
file.getSize(),
file.getUrl(),
"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
file.getDescription(),
file.getMimeType(),
folderName
]);
}
}

}

要检查Gdrive中是否存在特定的文件类型,您不能使用If statement,而是使用file.hasnext()函数,下面是只检查spreadsheet类型并根据您的期望返回属性的方法,请注意,获取电子表格的file size将是无意义的操作,因为它将是0字节,因为它存储在谷歌数据库中:

function fileType() {
var folder = DriveApp.getFolderById('xxx');
var files = folder.getFiles();
while(files.hasNext()){
var file = files.next();
Logger.log(file.getUrl());
Logger.log(file.getName())
}
}

我已经进行了测试,整个代码运行良好,除了这一部分,通过修改我将更新所有日志和表单数据:(

来自

var folder = DriveApp.getFoldersById(FOLDER_ID);
if (folder.hasNext()) {
processFolder(folder);
} else {
Browser.msgBox('Folder not found!');
}

收件人:

var folders = DriveApp.getFolderById('xxx');
var folder = folders.getFolders();
if (folder.hasNext()) {
processFolder(folder);
} else {
Browser.msgBox('Folder not found!');
}

相关内容

最新更新