删除不以日期开头的文件(GAS-Google云端硬盘)

时间:2019-10-23 20:00:10

标签: google-apps-script

今天,脚本删除日期早于今天的文件:

function getOldFileIDs() {
  var folder = DriveApp.getFolderById('XXXXXXXXXXXXXXXXXXXXXXXX');
  var files = folder.getFiles();
  var shift = new Date().getTime() + 1000*60*60*5
  var today = new Date(new Date(shift).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)) {
      var date = new Date(dateFromFilename).getTime();
      if (date < today) {
        obj.push({id: file.getId(), date: file.getDateCreated(), owner: file.getOwner().getEmail()});
      }
    }
  }
  return obj;
};

function deleteFiles() {
  var email = "XXXXXXXXXXXXXXXXXXXX@gmail.com";
  var obj = getOldFileIDs();
  obj.forEach(function(e) {
    if (e.owner == email) {
      Drive.Files.remove(e.id);
    }
  });
};

我想让脚本也解析是否存在一个没有以日期开头的文件(如果有的话),并且也会删除该文件,因此不会因为文件被保存而将旧文件保存在文件夹中无法解析名称开头的日期

正确方法: 2019/10/20 Europe Lille x PSG.pdf

在以下情况下删除: Europe Lille x PSG.pdf

我需要调整什么,并且脚本也可以进行分析?

我尝试对以下内容进行修改:

var dateFromFilename = file.getName().substr(0, 10);
    if (/\d{4}\/\d{2}\/\d{2}/.test(dateFromFilename)) {

但是在尝试放置其他if ( status = 204)作为错误警报时返回了错误。

1 个答案:

答案 0 :(得分:1)

  • 您要删除文件名中包含日期且日期小于今天的文件。
  • 您还希望删除文件名中不包含日期的文件。
  • 您想通过修改脚本来实现。

如果我的理解是正确的,那么该修改如何?

修改点:

  • 在脚本中,if (/\d{4}\/\d{2}\/\d{2}/.test(dateFromFilename)) {}的if语句检查文件名中是否包含日期。我认为这可以用于实现您的目标。

修改后的脚本:

请按如下所示修改脚本。请认为这只是几个答案之一。

从:
if (/\d{4}\/\d{2}\/\d{2}/.test(dateFromFilename)) {
  var date = new Date(dateFromFilename).getTime();
  if (date < today) {
    obj.push({id: file.getId(), date: file.getDateCreated(), owner: file.getOwner().getEmail()});
  }
}
至:
if (/\d{4}\/\d{2}\/\d{2}/.test(dateFromFilename)) {
  var date = new Date(dateFromFilename).getTime();
  if (date < today) {
    obj.push({id: file.getId(), date: file.getDateCreated(), owner: file.getOwner().getEmail()});
  }
} else {
  obj.push({id: file.getId(), date: file.getDateCreated(), owner: file.getOwner().getEmail()});
}

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。