【发布时间】:2019-11-29 01:04:49
【问题描述】:
我正在使用 Google 云端硬盘,我想归档所有与我的计算机同步且超过一定时间的文件。 因此,存档文件将在下次同步时从我的计算机中消失。
我找到了几个脚本来执行文件移动,但移动文件并保持路径结构就像在计算机上本地使用 robocopy/powershell 命令移动一样似乎具有挑战性。
知道 Google Apps 脚本是否可以实现此类功能?
到目前为止,我还没有集成复制/删除功能。我正在检索文件夹路径,我想一定有办法检查目标中是否已经存在路径,如果不存在,创建子文件夹?
function FilesModifiedLastWeek(){
// Find files modified last week
var today = new Date();
var oneDayAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
var startTime = oneDayAgo.toISOString();
// The magic search expression
var search = '(trashed = true or trashed = false) and (modifiedDate > "' + startTime + '")';
var files = DriveApp.searchFiles(search);
// Loop through all the files in the search results
while( files.hasNext() ) {
var file = files.next();
var fileName = file.getName();
var parentFolder = file.getParents();
folders = [];
//Get full path
while (parentFolder.hasNext()) {
parentFolder = parentFolder.next();
var title = parentFolder.getName();
folders.push(parentFolder.getName());
parentFolder = parentFolder.getParents();
}
var fileURL = file.getUrl();
var dateCreated = Utilities.formatDate(file.getDateCreated(), "Europe/Zurich", "yyyy-MM-dd HH:mm");
Logger.log("Filename: " + fileName + " Folder path: " + folders.reverse().join("/") + " File creation date:" + dateCreated);
}
}
补充一点,它是一种从搜索中排除存档文件夹的方法吗? :)
【问题讨论】:
-
您能否澄清一下“保留文件夹路径”是什么意思?它应该保存在哪里?
-
嗨,我的意思是,如果要移动的文件位于 My Compter/LambdaFolder/AlphaSubFolder/Myfile.pdf 下,我想将此文件存储在 Archive/LambdaFolder/AlphaSubFolder/ 下我的文件.pdf
-
可以在Folder类的实例上调用getFoldersByName(name)方法来获取所有子文件夹。如果此方法返回的FolderIterator 在调用hasNext() 后返回true,则该文件夹已经存在,如果不存在,则必须创建它(这也意味着整个路径不存在)。您可以对整个路径重复此过程,然后将文件移动到最后一个文件夹并将其从前一个父文件夹中删除。这将允许您在不复制文件的情况下移动文件。这就是你要找的吗?
标签: google-apps-script flysystem-google-drive