我创建了我的根谷歌驱动器包含视频文件的文件夹(.AVI)。 我需要写一个谷歌的Apps脚本永久删除旧的视频文件时,文件的总数超过100个文件? 即删除所有的视频文件,除了最后一个(新)100个文件。
每个文件的名称与该文件创建示例中的时间:2013-02-25__20-29-45-01.avi
2013-02-25__20-24-49-09.avi
2013-02-25__18-26-24-08.avi
......
所以,我觉得剧本应该首先列出这些文件按字母顺序开始与更新,与旧的结束,然后先留着100个文件,并永久删除所有其他人。 我知道该怎么做,在bash脚本,而不是在谷歌驱动器,我认为他们使用JavaScript(.GS)。
正如我在评论说,你提到的脚本是不是从你想要什么很远......但我承认你的情况比较复杂了一点,所以让我们说,这将是另一个例外STO政治;-)
这就是说,我没有彻底测试此代码,以便它可能会需要一些调整。 我留下了几个评论日志的整个脚本来测试中间结果,不要犹豫,使用它们。 此外,考虑更新邮件ADRESS,不要忘记, setTrashed
(尝试新的代码的时候更好的话)可以手动逆转;-)
编辑:我今天早上花了一些时间来测试脚本,它有一对夫妇的“近似” ;-)这里是一个“干净”的版本,很好地工作的
function DeleteMyOldAvi() {
var pageSize = 200;
var files = null;
var token = null;
var i = null;
var totalFiles = []
var toDelete = []
Logger.clear()
do {
var result = DocsList.getAllFilesForPaging(pageSize, token);
var files = result.getFiles()
var token = result.getToken();
for(n=0;n<files.length;++n){
if(files[n].getName().toLowerCase().match('.avi')=='.avi'){
totalFiles.push([files[n].getName(),files[n].getDateCreated().getTime(),files[n].getId()]);// store name, Date created in mSec, ID in a subarray
// Logger.log(files[n].getName()+' created on '+Utilities.formatDate(files[n].getDateCreated(), 'GMT','MMM-dd-yyyy'))
}
}
} while (files.length == pageSize);// continue until job is done
totalFiles.sort(function(x,y){ // sort array on milliseconds date created (numeric/descending)
var xp = x[1];
var yp = y[1];
return yp-xp ;
});
// Logger.log(totalFiles.length)
if(totalFiles.length>100){
for(nn=totalFiles.length-1;nn>=100;nn--){
toDelete.push(totalFiles[nn]) ;// store the files to delete
}
// Logger.log(toDelete)
for(n=0;n<toDelete.length;++n){
var file = toDelete[n]
DocsList.getFileById(file[2]).setTrashed(true);// move to trash each file that is in the toDelete array
Logger.log(file[0]+' was deleted');// log the file name to create mail message
}
MailApp.sendEmail('myMail@gmail.com', 'Script AUTODELETE report', Logger.getLog());// send yourself a mail
}else{
MailApp.sendEmail('myMail@gmail.com', 'Script AUTODELETE report', 'No file deleted');// send yourself a mail
}
}