javascript - 如何从谷歌驱动器文件夹递归列出所有文件到电子表格?
问题描述
我正在尝试将所有文件从谷歌驱动器文件夹递归地列出到电子表格中,并按大小对文件列表进行排序(最大的文件应该在顶部)。我遇到了脚本问题
启动功能给出错误 -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
butfile.hasnext()
函数,以下是仅检查spreadsheet
类型并根据您的期望返回属性的方法,请注意,获取file size
电子表格将是毫无意义的操作,因为它由于存储在 Google 数据库中,将为 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!');
}
推荐阅读
- javascript - 使用 Netlify 在 Gatsby 网站上进行 prerenderReady
- android - 即使应用程序崩溃也显示 AlertDialog
- bots - 如何从另一个 Telegram 组和频道获取和读取数据
- excel - 我想在一个范围内查找多个字符串,然后对于每个查找,用文本填充相邻的单元格
- python - 使用 tkinter 更改文件夹中所有图像的扩展名
- c# - 对于断开连接的接口,C# DHCP 不会更改
- arch - 你如何得到zstd?
- javascript - 如何从列中获取时间值,延长持续时间,然后在谷歌日历上创建事件?
- azure - Azure az cli Docker Hub Web 应用资源配置
- laravel - laravel new sh:作曲家:找不到命令