Google apps script 简化这个代码?从文件夹&;获取所有文件;它';s子文件夹--当前代码正在超时
我有一个驱动器文件夹,在一个父文件夹和多个子文件夹中有大约1500张谷歌幻灯片。我一直在使用这个脚本,但它停止工作,因为它超时了(我们的文件夹已经大大增加)。有什么简单的办法吗?我需要所有这些文件的链接(用它们的文件名)填充到Google工作表的一个选项卡上 这是我当前的脚本(从网上的某个地方获得并对其进行了一些修改;我在编写代码方面没有太多的经验/训练)Google apps script 简化这个代码?从文件夹&;获取所有文件;它';s子文件夹--当前代码正在超时,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个驱动器文件夹,在一个父文件夹和多个子文件夹中有大约1500张谷歌幻灯片。我一直在使用这个脚本,但它停止工作,因为它超时了(我们的文件夹已经大大增加)。有什么简单的办法吗?我需要所有这些文件的链接(用它们的文件名)填充到Google工作表的一个选项卡上 这是我当前的脚本(从网上的某个地方获得并对其进行了一些修改;我在编写代码方面没有太多的经验/训练) 你想要所有的文件和文件夹,或者你能提供一些标准并安排它每天/每周运行吗?与一次性获取所有内容不同,保留一个增量模型,在该模型中搜索超过一天或
你想要所有的文件和文件夹,或者你能提供一些标准并安排它每天/每周运行吗?与一次性获取所有内容不同,保留一个增量模型,在该模型中搜索超过一天或类似时间的文件。每天(通过调度程序)运行此代码,以便它继续向工作表中添加行。使用
setValues()
而不是appendRow()
并使用批处理操作getContinuationToken()
好的,谢谢!这是个好主意!我只是一开始很难把所有的文件都取出来。我也是使用/编写脚本的新手。我甚至不知道你说的getContinuationToken是什么意思。不过我会在参考网站上看看!我感谢你的帮助!!
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);
}
}