如何递归地列出从 google 驱动器文件夹到电子表格的所有文件?
How to list all files recursively from google drive folder to spreadsheet?
我正在尝试以递归方式列出从 google 驱动器文件夹到电子表格的所有文件,并按大小对文件列表进行排序(最大的文件应位于顶部)。我遇到了脚本问题
启动函数出现错误 - 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
类型和return的方法] 属性 按照你的期望,请注意,获取 spreadsheet 的 file size
将是无意义的操作,因为它将是 0 字节,因为存储在 Google 数据库:
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())
}
}
我已经进行了测试,整个代码工作正常,除了这部分,通过修改我将更新所有日志和 sheet 数据:)
来自
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!');
}
我正在尝试以递归方式列出从 google 驱动器文件夹到电子表格的所有文件,并按大小对文件列表进行排序(最大的文件应位于顶部)。我遇到了脚本问题
启动函数出现错误 - 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
类型和return的方法] 属性 按照你的期望,请注意,获取 spreadsheet 的 file size
将是无意义的操作,因为它将是 0 字节,因为存储在 Google 数据库:
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())
}
}
我已经进行了测试,整个代码工作正常,除了这部分,通过修改我将更新所有日志和 sheet 数据:)
来自
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!');
}