我正在尝试将我的 Google 云端硬盘文件夹名称与某些文件名进行比较,如果匹配,则将文件移动到相应的文件夹。
即 -
文件夹:
示例1,
示例2,
示例3,
文件:
example1.jpg(移至文件夹 - example1),
example2.jpg(移至文件夹 - example2),
example3.jpg(移至文件夹 - example3)
到目前为止,我有两个带有文件夹和文件名的数组,我正在循环并比较这两个数组。
我正在努力解决下一步 - 将文件移动到文件夹。
这就是我到目前为止所得到的......
function folderAndFiles(){
var fileArray = [];
var folderArray = [];
var dApp = DriveApp;
var folderIter = dApp.getFoldersByName("files");
var folder = folderIter.next();
var fileIter = dApp.getFiles();
var filesIter = folder.getFiles();
while(filesIter.hasNext()) {
var file = filesIter.next();
var fileName = file.getName();
fileArray.push(fileName)
}
fileArray.sort();
var newFiles = fileArray.map(function(d) { return d.replace('.jpg', ''); });
Logger.log(newFiles);
var folderIterTwo = dApp.getFoldersByName("names");
var folderTwo = folderIterTwo.next();
var nameFolders = folderTwo.getFolders();
while(nameFolders.hasNext()) {
var folders = nameFolders.next();
var names = folders.getName();
folderArray.push(names)
}
folderArray.sort();
Logger.log(folderArray);
for (var i = 0; i < folderArray.length; i++) {
for (var j = 0; j < newFiles.length; j++) {
if (folderArray[i] == newFiles[j]) {
folderArray[i].addFile(fileArray[i]);
Logger.log("Moved");
}
}
}
}
任何帮助将不胜感激!
谢谢!
最佳答案
尝试下面的代码:
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");
}
}
}
程序流程如下:
创建一个包含所有要移动的文件的列表。
创建 dictionary将文件夹名称映射到实际的 folder object .
对于每个文件:
- 计算其名称(删除扩展名)。
- 检查是否存在同名的文件夹。
- 如果存在,请将相关文件移动到该文件夹。
请注意,文件实际上已移动 - 它被添加到新文件夹中,但也从原始文件夹中删除。如果您只想复制它,请删除代码中的 filesParent.removeFile(file);
行。
关于google-apps-script - Google 脚本 - 将文件名与文件夹名称进行比较,如果名称匹配,则将文件移动到文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59715922/