【问题标题】:Google Drive Delete Files App Script getAllFilesForPagingGoogle Drive 删除文件应用脚本 getAllFilesForPaging
【发布时间】:2016-02-16 11:41:56
【问题描述】:

我正在尝试弄清楚这个脚本,但没有乐趣。

我正在使用某人的脚本在某个日期之后删除文件,但我想修改它以删除任何 .bak 文件,无论日期如何。那位很好,但我不断收到错误:

"TypeError: 在对象驱动器中找不到函数 getAllFilesForPaging"

'function DeleteMyJpegs() {
var pageSize = 200;
var files = null;
var token = null;
var i = null;
var ThirtyDaysBeforeNow = new Date().getTime()-3600*1000*24*30 ;// 30 is the number of days 

//(3600 秒 = 1 小时,1000 毫秒 = 1 秒,24 小时 = 1 天,30 天是您想要的持续时间 记录器.clear();

do {


var result = DriveApp.getAllFilesForPaging(pageSize, token);
var files = result.getFiles()
var token = result.getToken();
    for(n=0;n<files.length;++n){
        if(files[n].getName().toLowerCase().match('.bak')=='.bak' && files[n].getDateCreated().getTime()<ThirtyDaysBeforeNow){
//            files[n].setTrashed(true)
            Logger.log(files[n].getName()+' created on '+Utilities.formatDate(files[n].getDateCreated(), 'GMT','MMM-dd-yyyy'))
        }
      }    
 } while (files.length == pageSize);

  MailApp.sendEmail('email@address.co.uk', 'Script AUTODELETE BAK report', Logger.getLog());

}'

【问题讨论】:

  • 代码出了点问题
  • 当您从某个地方复制代码并尝试调整它时,您应该确保正确更改它。脚本编辑器中的自动完成功能 (CTRL+SPACE) 对查看您可以使用的可能方法很有帮助...您会注意到 DocsList 和 DriveApp 有非常不同的方法,因此也有不同的方法。

标签: api google-apps-script


【解决方案1】:

DriveApp 中没有getAllFilesForPaging() 方法。这可能是原作者写的自定义函数。这就是您可以使用 DriveApp 文件迭代器重写它的方式。

function deleteMyBAKs(){
  var ThirtyDaysBeforeNow = new Date().getTime()-3600*1000*24*30 ;// 30 is the number of days
  var files = DriveApp.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    if(file.getName().toLowerCase().match('.bak')=='.bak' && file.getDateCreated().getTime()<ThirtyDaysBeforeNow){
      try{file.setTrashed(true);}
      catch(e){Logger.log("Unable to Trash: "+file.getName()) }         
      Logger.log(file.getName()+' created on '+Utilities.formatDate(file.getDateCreated(), 'GMT','MMM-dd-yyyy'));
     }       
   } 
  MailApp.sendEmail('email@address.co.uk', 'Script AUTODELETE BAK report', Logger.getLog());
}

有关 DriveApp 和文件迭代器的更多信息,请访问:
https://developers.google.com/apps-script/reference/drive/drive-app

【讨论】:

  • 太好了,谢谢。它似乎除了说:
  • 太好了,谢谢。它似乎除了说: file.setTrashed(true) "ACTION NOT ALLOWED" 我要上厕所
  • @Spencer :问题中的代码取自 one of my answers,它最初使用的是 DocsList 方法:DocsList.getAllFilesForPaging 但转换为 DriveApp 并不好...
  • @PMAXWELL 这可能是因为您只有对文件的读取权限。我在上面添加了一个 try..catch 示例。如果这回答了您的问题,请记住接受。
  • 我本来想更多地研究代码,但我的驱动器上有 150 万个文件,它崩溃了,现在无法同步,所以我不得不快速从驱动器中删除很多文件。我认为它基本上在那里,它似乎运行良好。我有2个问题。首先,它似乎无法删除每个文件上的任何文件“无法删除”。其次,它一直在超时,所以我添加了一个计数器,这样它就会一次运行 100 个。我不确定为什么它不能丢弃任何东西。我是域的所有者和管理员。我找了几个小时,但没有快乐
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多