【发布时间】:2020-01-13 16:30:12
【问题描述】:
感谢这里的好人,我有一个脚本可以交叉检查文件名和文件夹名称,如果名称匹配,则将文件移动到文件夹(下面的代码)
如果搜索某个文件夹的子文件夹并检查文件以查看部分名称是否与子文件夹名称匹配,我现在正在苦苦挣扎
例如
文件夹:
文件夹名称:example1 子文件夹名称:example1-commercial 子文件夹名称:example1-clients
文件: example1-commercial.pdf(移动到 example1-commercial 文件夹) example1-clients.pdf(移动到 example1-clients 文件夹)
任何帮助将不胜感激!
谢谢!
function folderAndFiles(){
var files = [];
var folderMap = {};
var foldersParent = DriveApp.getFoldersByName("names").next();
var filesParent = DriveApp.getFoldersByName("files").next();
var filesIterator = filesParent.getFiles();
var foldersIterator = foldersParent.getFolders();
while(filesIterator.hasNext()) {
var currentFile = filesIterator.next();
files.push(currentFile);
}
while(foldersIterator.hasNext()) {
var currentFolder = foldersIterator.next();
folderMap[currentFolder.getName()] = currentFolder;
}
for (var i=0; i<files.length; i++) {
var file = files[i];
var fileName = file.getName().replace('.jpg', '');
var destinationFolder = folderMap[fileName];
if (destinationFolder) {
destinationFolder.addFile(files[i]);
filesParent.removeFile(file);
Logger.log("Moved");
}
}
}
【问题讨论】:
-
我猜你会想用递归函数遍历文件夹。
-
开始将您的逻辑分离为可重用的函数。您的代码知道如何获取文件夹的子文件夹,因此您只需要使用新的父级运行该逻辑。然后,您的代码只需更新将文件从“名称匹配”移动到“名称部分匹配”的条件。您在哪里尝试修改代码?
标签: javascript google-apps-script