【问题标题】:Delete old files from a Google Drive folder从 Google Drive 文件夹中删除旧文件
【发布时间】:2019-10-04 01:58:52
【问题描述】:

我创建了这个脚本来删除超过 3 小时前发布的文件。并且即使最新的文件超过 3 小时,也不会被删除,因此文件夹永远不会为空。

我启用了 Google 的高级服务,称为 DRIVE API V2。

我激活了一个触发器,每 5 分钟分析一次文件夹,但文件通常不会被删除,它们仍保留在文件夹中。该脚本有时有效,有时无效。

我想知道哪里出了问题或者我需要修改什么以使其完美运行。

function getOldFileIDs() {
  // Old date is 3 Hours
  var oldDate = new Date().getTime() - 3600*1000*3;
  var cutOffDate = new Date(oldDate).toISOString();

  // Get folderID using the URL on google drive
  var folder = DriveApp.getFolderById('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
  var files = folder.searchFiles('modifiedDate < "' + cutOffDate + '"');

  var obj = [];
  while (files.hasNext()) {
    var file = files.next();
    obj.push({id: file.getId(), date: file.getDateCreated()});
  }
  obj.sort(function(x, y) {return x.date < y.date ? 1 : -1});
  obj.shift();
  var fileIDs = obj.map(function(e) {return e.id});
  return fileIDs;
};

function deleteFiles() {
  var fileIDs = getOldFileIDs();
  fileIDs.forEach(function(fileID) {
    Drive.Files.remove(fileID);
  });
};

我还需要一些帮助,以便此脚本可以分析文件夹中是否存在同名文件,如果存在,它会删除多余的文件,以便每个名称始终只有一个文件。

还有一个新的细节,一个新的错误出现了,直到早些时候没有发生......说:

对 drive.files.delete 的 API 调用失败,错误是该文件权限不足(第 24 行)

第 24 行:

    Drive.Files.remove(fileID);

【问题讨论】:

标签: google-apps-script google-drive-api


【解决方案1】:

通过使用消费者(免费)帐户,只有文件所有者才能删除它们。为防止该错误,在调用Drive.Files.remove(fileID) 之前,您的代码应检查您是否是文件所有者。

相关

【讨论】:

  • 非常感谢您的关注...我一直在查看您发送给我的链接,但不幸的是,我无法重现两个帐户获得完全访问权限所需的内容到文件夹中的所有文件。我的编程知识非常有限。但我会尽量找人为我做这项服务,我自己真的做不到。我希望这不是一项昂贵的服务。
  • 我又添加了两个链接。
  • @FredericoMattos 另一种选择是调整以下行以仅包含您拥有的文件var files = folder.searchFiles('modifiedDate &lt; "' + cutOffDate + '"');
  • var files = folder.searchFiles('modifiedDate &lt; "' + cutOffDate + '" and "me@gmail.com" in owners ');鲁本会这样吗?
  • 我建议你创建一个用于测试目的的帐户并尝试上面的代码行
【解决方案2】:

试试这个:

 obj.sort(function(a, b) {
    var a=new Date(a.date).valueOf();
    var b=new Date(b.date).valueOf();
    return b-a;
  });

【讨论】:

  • Cooper,我更新了问题,现在出现了一个新错误……我把出现的错误放在最后,请你帮帮我吗?
  • 您是否在 Google Cloud API 控制台上启用了 API?这也是您拥有的文件吗?您似乎没有删除此文件的权限。
  • 我还使用创建文件夹的帐户进行了测试。但它仍然给出同样的错误。我在 Google 的高级服务上启用了 Google Drive API V2 直到今天 15 小时一切正常,现在我意识到它已经完全停止并给出了这个错误。我没有改变任何东西。
猜你喜欢
  • 1970-01-01
  • 2022-06-10
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多