Google apps script 调整删除Google Drive上超过30天的文件的脚本
我有一个从谷歌硬盘删除旧文件的脚本。。。我想调整它,以便它删除特定文件夹中的文件,特别是3个多小时前创建的文件。还有一个细节,文件夹不能为空,因此即使最新文件已发布超过3小时,也不能删除。只有在文件夹中添加其他文件时,才能删除该文件。我需要帮助完成这项工作,我无法编辑这些详细信息的脚本Google apps script 调整删除Google Drive上超过30天的文件的脚本,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,我有一个从谷歌硬盘删除旧文件的脚本。。。我想调整它,以便它删除特定文件夹中的文件,特别是3个多小时前创建的文件。还有一个细节,文件夹不能为空,因此即使最新文件已发布超过3小时,也不能删除。只有在文件夹中添加其他文件时,才能删除该文件。我需要帮助完成这项工作,我无法编辑这些详细信息的脚本 function getOldFileIDs() { var fileIDs = []; // Old date is 30 days var oldDate = new Date().getTime
function getOldFileIDs() {
var fileIDs = [];
// Old date is 30 days
var oldDate = new Date().getTime() - 3600*1000*24*30;
var cutOffDate = Utilities.formatDate(new Date(oldDate), "GMT", "yyyy-MM-dd");
// Get folderID using the URL on google drive
var folder = DriveApp.getFolderById('XXXXXXX');
var files = folder.searchFiles('modifiedDate < "' + cutOffDate + '"');
while (files.hasNext()) {
var file = files.next();
fileIDs.push(file.getId());
Logger.log('ID: ' + file.getId() + ', Name: ' + file.getName());
}
return fileIDs;
};
function deleteFiles() {
var fileIDs = getOldFileIDs();
fileIDs.forEach(function(fileID) {
DriveApp.getFileById(fileID).setTrashed(true);
});
};
函数getOldFileIDs(){
var fileIDs=[];
//旧的日期是30天
var oldDate=new Date().getTime()-3600*1000*24*30;
var截止日期=Utilities.formatDate(新日期(旧日期),“GMT”,“yyyy-MM-dd”);
//使用google drive上的URL获取folderID
var folder=DriveApp.getFolderById('XXXXXXX');
var files=folder.searchFiles('modifiedDate<'+截止日期+'”);
while(files.hasNext()){
var file=files.next();
push(file.getId());
Logger.log('ID:'+file.getId()+',Name:'+file.getName());
}
返回文件ID;
};
函数deleteFiles(){
var fileIDs=getOldFileIDs();
forEach(函数(fileID){
DriveApp.getFileById(fileID).setTrashed(true);
});
};
- 您想删除
修改日期<3小时
的文件
- 这些文件位于特定文件夹中
- 您希望使用谷歌应用程序脚本实现这一点
- 当看到的文档时,对于
,似乎需要使用ISO格式modifiedDate
modifiedDate<3小时反映到脚本中时,它将变成如下所示
function getOldFileIDs() {
// Old date is 30 days
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('XXXXXXX');
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 getOldFileIDs() {
// Old date is 30 days
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('XXXXXXX');
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;
};
发件人:
致:
参考:
如果我误解了你的问题,而这不是你想要的结果,我道歉
增加1:
- 您想删除
修改日期<3小时的文件
- 这些文件位于特定文件夹中
- 您希望使用谷歌应用程序脚本实现这一点
- 您想保留最新创建的文件。
如果我的理解是正确的,这次修改怎么样
修改脚本:
请修改getOldFileIDs()
的函数,如下所示
function getOldFileIDs() {
// Old date is 30 days
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('XXXXXXX');
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;
};
致:
- 通过此修改,文件ID被完全删除。因此,在测试时,请小心。
非常感谢您的解释。。。仍然存在疑问的是,是否有任何方法可以使文件夹永远不为空,始终至少有一个文件,即使它的创建时间超过3小时。文件夹不能为空。最新的文件必须始终保留,即使它是旧的(创建3小时或更长时间)。@Frederico Mattos感谢您的回复。我不得不道歉,我提议的脚本对你的情况没有用处。在答复中,您希望保留最新创建的文件。我可以这样理解。由此,我又提出了一个修改后的脚本。你能确认一下吗?如果我误解了你的问题,而这不是你想要的方向,我很抱歉。关于只留下一个文件的问题,我可以向你保证,它在几个小时内工作,因为目前有几个文件是在不到3小时的时间内创建的。我会回来告诉你它是否有效。但从我看到的情况来看,它工作得很好,我已经创建了一个触发器,它将每30分钟激活一次,以便能够删除旧文件。我可以再问你一件事吗?当文件被扔进垃圾箱时,它们会消耗谷歌硬盘内存吗?如果是这样,有没有办法永久删除文件而不被扔进垃圾箱?我恐怕无法满足5G的容量。非常感谢您的帮助,您不知道这将使我的日常工作变得更加轻松!很高兴你来了,没问题,伙计!
DriveApp.getFileById(fileID).setTrashed(true);
Drive.Files.remove(fileId);