谷歌Apps脚本永久删除旧文件,并保持过去的100个文件(Google apps script to

2019-10-17 17:43发布

我创建了我的根谷歌驱动器包含视频文件的文件夹(.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)。

Answer 1:

正如我在评论说,你提到的脚本是不是从你想要什么很远......但我承认你的情况比较复杂了一点,所以让我们说,这将是另一个例外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
       }
 } 


文章来源: Google apps script to delete old files permanently and keep last 100 files