如果文件的名称以早于当前日期(Google 云端硬盘)的日期开头,请删除该文件



在 Stackoverflow 社区的帮助下,我能够创建这个脚本来删除超过 3 小时的文件:

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('XXXXXXXXXXXXXXXXXXXXX');
var files = folder.searchFiles('modifiedDate < "' + cutOffDate + '"');
var obj = [];
while (files.hasNext()) {
var file = files.next();
obj.push({id: file.getId(), date: file.getDateCreated(), owner: file.getOwner().getEmail()}); // Modified
}
obj.sort(function(a, b) {
var a= new Date(a.date).valueOf();
var b= new Date(b.date).valueOf();
return b-a;
});
obj.shift();
return obj; // Modified
};
function deleteFiles() {
var email = "XXXXXXXXXXXXXXXXX@gmail.com"; // Added
var obj = getOldFileIDs(); // Modified
obj.forEach(function(e) { // Modified
if (e.owner == email) { // Added
Drive.Files.remove(e.id); // Modified
}
});
};

此文件夹中的文件名始终以日期开头,例如:

2019/10/05 SerieA Vasco da Gama x Flamengo.pdf

我想帮助了解我需要在脚本中修改什么以及它的外观,以便在创建时间超过 3 小时时删除它,而不是从日期早于当前日期的文件中删除。

我试图修改.getdate但完全不成功,我无法让脚本解析文件名的开头,我只能找到文件名及其 id。

  • 有些文件名像2019/10/05 SerieA Vasco da Gama x Flamengo.pdf.
    • 日期字符串和格式始终分别是距文件名顶部 10 个字符和yyyy/MM/dd个字符。
  • 您要删除文件名中在今天之前具有旧日期字符串的文件。
    • 在这种情况下,more than 3 hours of creation将被忽略。所以modifiedDate也被忽略了。
  • 您希望使用Google Apps Script实现此目的。

如果我的理解是正确的,那么这个修改怎么样?请把这看作是几个答案之一。此修改脚本的流程如下。

流:

  1. 检索文件夹中的所有文件。
  2. 对于每个文件,检索文件名和日期字符串。
  3. 将文件名中的日期字符串转换为日期对象。与今天相比。当文件名中的日期早于今天时,文件信息将添加到数组中进行删除。
  4. 从检索到的文件信息中删除文件

修改后的脚本:

修改脚本时,请按如下方式修改getOldFileIDs()的功能。

function getOldFileIDs() {
var folder = DriveApp.getFolderById('XXXXXXXXXXXXXXXXXXXXX');
var files = folder.getFiles();
var today = new Date(new Date().toDateString()).getTime();
var obj = [];
while (files.hasNext()) {
var file = files.next();
var dateFromFilename = file.getName().substr(0, 10);
if (/d{4}/d{2}/d{2}/.test(dateFromFilename)) { // Here, the format of date string is checked.
var date = new Date(dateFromFilename).getTime();
if (date < today) {
obj.push({id: file.getId(), date: file.getDateCreated(), owner: file.getOwner().getEmail()});
}
}
}
return obj;
};

引用:

  • toDateString((
  • 测试((

如果我误解了你的问题,这不是你想要的结果,我很抱歉。

最新更新