从Google云端硬盘文件夹中删除旧文件

问题描述 投票:0回答:2

我创建了此脚本以删除3个多小时前发布的文件。即使最新文件早于3个小时,也不会被删除,因此该文件夹永远不会为空。

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

我激活了一个触发器,每隔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);

我创建了此脚本以删除3个多小时前发布的文件。即使最新文件的时间早于3个小时,也不会删除该文件,因此该文件夹永远不会为空。我启用了Google的...

google-apps-script google-drive-api
2个回答
1
投票

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


1
投票

尝试一下:

© www.soinside.com 2019 - 2024. All rights reserved.