目前,我一直在尝试将文件或文件夹中的文件从最后创建的源文件夹复制到目标文件夹,方法是将文件夹名称与上次创建的文件夹进行比较。现在,我想将源的最后创建日期按文件夹名称与所有目标文件夹进行比较,如果使用相同名称的文件夹退出,则复制数据;否则,使用相同的源文件夹名称创建新文件夹并复制内容。
在StackOverflow社区的帮助下,我能够比较文件夹的最后创建日期和复制内容,但现在我想比较源上一日期创建的文件夹名称和目标的所有文件夹。如果由相同的文件夹退出,则复制其中的数据,否则将创建一个新文件夹。附件是获取最后日期创建文件夹的代码,并与目标文件夹进行比较。
var destSubFolders = destLastFolder.getFolders();
var destSubArray=[];
while(destSubFolders.hasNext()) {
var destSubfolder = destSubFolders.next();
destSubArray.push({
value: destSubfolder.getDateCreated().valueOf(),
sourceFolderId: destSubfolder.getId()
});
}
destSubArray.sort(function(a,b){return b.value-a.value;}); // Comparing between the date created and extracts the last created folder.
var destLastSubFolder=DriveApp.getFolderById(destSubArray[0].sourceFolderId);// gets the last created sub folder by id.
var destinationLastSubFolderFiles= destLastSubFolder.getFiles();//get files of the last created subfolder.
var d_SubName = destLastSubFolder.getName(); // get name of the last created subfolder.
if(s_SubName == d_SubName ) { //condition for comapring source and destination last created subfolder names.
var dfnA=[]; // getting files from source sub folder and copying into destination folder.
while(destinationLastSubFolderFiles.hasNext()) {
var dF=destinationLastSubFolderFiles.next();
dfnA.push(dF.getName());
}
while(sourceLastSubFolderFiles.hasNext()) {
var sF=sourceLastSubFolderFiles.next();
if(dfnA.indexOf(sF.getName())==-1) {
sF.makeCopy(sF.getName(),destLastSubFolder); // copying files after comparing by names.
}
}
} else { //creates new folder by source subfolder name and copies data into new created folder.
var sNewName = lastSubFolder.getName();
var dFolderName=destLastFolder.createFolder(sNewName);
while(sourceLastSubFolderFiles.hasNext()) {
var sFilesIterator=sourceLastSubFolderFiles.next();
sFilesIterator.makeCopy(sFilesIterator.getName(),dFolderName); // copying files after comparing by names.
}
}我需要一个源文件夹名称与目标所有文件夹名称的比较,如果匹配,那么只复制内容,否则创建一个新的文件夹和内容。
发布于 2019-11-08 02:33:28
这对我来说很有效:
function findSubFolderWithLastDate(startingFolderId) {
var startingFolderId=startingFolderId||'defaultId';
var startFolder=DriveApp.getFolderById(startingFolderId);
var srcFldrs=startFolder.getFolders();
var fldrA=[];
while(srcFldrs.hasNext()) {
var srcFldr=srcFldrs.next();
fldrA.push({value:srcFldr.getLastUpdated().valueOf(),id:srcFldr.getId(),name:srcFldr.getName()})
}
return fldrA.sort(function(a,b){return(b.value-a.value);})[0].id;
}
function copyingFilesFromSourceToDestinationFolderWithSameName(srcfldrId,desfldrId) {
var desFldr=DriveApp.getFolderById(desfldrId);
var srcFldr=DriveApp.getFolderById(srcfldrId);
var srcSubFldrs=srcFldr.getFolders();
while(srcSubFldrs.hasNext()) {
var srcSubFldrFound=false;
var srcSubFldr=srcSubFldrs.next();
var desSubFldrs=desFldr.getFolders();
while(desSubFldrs.hasNext()) {
var desSubFldr=desSubFldrs.next();
if(desSubFldr.getName()==srcSubFldr.getName()) {
srcSubFldrFound=true;
var files=srcSubFldr.getFiles();
while(files.hasNext()) {
var file=files.next();
file.makeCopy(file.getName(),desSubFldr);
}
break;
}
}
if(!srcSubFldrFound) {
var newFldr=desFldr.createFolder(srcSubFldr.getName());
var files=srcSubFldr.getFiles();
while(files.hasNext()) {
var file=files.next();
file.makeCopy(file.getName(),newFldr)
}
}
}
}https://stackoverflow.com/questions/58749843
复制相似问题