我有一个驱动器文件夹,一个父文件夹中有大约1500个Google幻灯片,还有多个子文件夹。我一直在使用此脚本,但由于超时(我们的文件夹已大大增加)而停止工作。有什么简单的方法可以解决此问题吗?我需要链接到所有这些文件(及其文件名)的链接到Google表格的“一个”标签上。
这是我当前的脚本(从网上某个地方获取并进行了一些修改;我对编写代码的经验不是很强/培训过)。
var folderId = '1TO3e8ilnqNuxBcvTw8D_3RsDxDzMwvX7';
// Main function 1: List all folders, & write into the current sheet.
function listFolders() {
getFolderTree(folderId, false);
}
// Main function 2: List all files & folders, & write into the current sheet.
function listAll() {
getFolderTree(folderId, true);
}
// =================
// Get Folder Tree.
function getFolderTree(folderId, listAll) {
try {
// Get folder by id.
var parentFolder = DriveApp.getFolderById(folderId);
// Initialise the sheet.
var file, data, sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();
// Get files and folders
getChildFolders(parentFolder.getName(), parentFolder, data, sheet, listAll);
} catch (e) {
Logger.log(e.toString());
}
}
// Get the list of files and folders and their metadata in recursive mode.
function getChildFolders(parentName, parent, data, sheet, listAll) {
var childFolders = parent.getFolders();
// List folders inside the folder.
while (childFolders.hasNext()) {
var childFolder = childFolders.next();
// Logger.log("Folder Name: " + childFolder.getName());
data = [
parentName + "/" + childFolder.getName(),
childFolder.getName(),
];
// List files inside the folder.
var files = childFolder.getFiles();
while (listAll & files.hasNext()) {
var childFile = files.next();
// Logger.log("File Name: " + childFile.getName());
data = [
childFile.getUrl(),
childFile.getName(),
];
// Write
sheet.appendRow(data);
}
// Recursive call of the subfolder
getChildFolders(parentName + "/" + childFolder.getName(), childFolder, data, sheet, listAll);
}
}