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



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

我启用了谷歌名为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);

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

相关

  • 是否可以获取Google云端硬盘文件的所有者?
  • 如何使用谷歌云端硬盘API获取文件的所有者
  • 如何以编程方式从Google云端硬盘中的"与我共享"中删除文件
  • 如何使用谷歌 API 检索文档的所有者或云端硬盘 ID?

试试这个:

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

最新更新