Google apps script 如果文件名的起始日期早于当前日期(Google Drive),则删除该文件

Google apps script 如果文件名的起始日期早于当前日期(Google Drive),则删除该文件,google-apps-script,Google Apps Script,在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

在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
    }
  });
};
函数getOldFileIDs(){ //旧日期是3小时 var oldDate=new Date().getTime()-3600*1000*3; var cutOffDate=新日期(oldDate).toISOString(); //使用google drive上的URL获取folderID var folder=DriveApp.getFolderById('xxxxxxxxxxxxxxxxxxxxxx'); var files=folder.searchFiles('modifiedDate<'+截止日期+'”); var-obj=[]; while(files.hasNext()){ var file=files.next(); obj.push({id:file.getId(),日期:file.getDateCreated(),所有者:file.getOwner().getEmail()});//修改 } 对象排序(函数(a,b){ var a=新日期(a.Date).valueOf(); var b=新日期(b.Date).valueOf(); 返回b-a; }); obj.shift(); return obj;//已修改 }; 函数deleteFiles(){ var电子邮件=”XXXXXXXXXXXXXXXXX@gmail.com“;//添加 var obj=getOldFileIDs();//已修改 对象forEach(函数(e){//修改 如果(e.owner==电子邮件){//添加 Drive.Files.remove(e.id);//修改 } }); }; 此文件夹中的文件名始终以日期开头,例如:

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

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

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

  • 文件名为
    2019/10/05 SerieA Vasco da Gama x Flamengo.pdf
    • 日期字符串和格式始终分别为文件名和
      yyyy/MM/dd
      顶部的10个字符
  • 您想删除文件名中在“今天”之前包含旧日期字符串的文件。
    • 在这种情况下,
      超过3小时的创建将被忽略。因此
      modifiedDate
      也被忽略
  • 您希望使用谷歌应用程序脚本实现这一点
如果我的理解是正确的,这次修改怎么样?请把这看作是几个答案中的一个。此修改脚本的流程如下所示

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;
};
流量:
  • 检索文件夹中的所有文件
  • 对于每个文件,检索文件名和日期字符串
  • 将文件名中的日期字符串转换为日期对象。并与今天进行了比较。当文件名中的日期早于今天时,文件信息将添加到数组中以进行删除
  • 从检索到的文件信息中删除文件
  • 修改脚本: 修改脚本时,请修改
    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;
    };
    
    函数getOldFileIDs(){ var folder=DriveApp.getFolderById('xxxxxxxxxxxxxxxxxxxxxx'); 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); 如果(/\d{4}\/\d{2}\/\d{2}/.test(dateFromFilename)){//此处,则检查日期字符串的格式。 var date=新日期(dateFromFilename).getTime(); 如果(日期<今天){ 推送({id:file.getId(),日期:file.getDateCreated(),所有者:file.getOwner().getEmail()}); } } } 返回obj; };
    参考资料:
    如果我误解了你的问题,而这不是你想要的结果,我道歉。

    • 文件名为
      2019/10/05 SerieA Vasco da Gama x Flamengo.pdf
      • 日期字符串和格式始终分别为文件名和
        yyyy/MM/dd
        顶部的10个字符
    • 您想删除文件名中在“今天”之前包含旧日期字符串的文件。
      • 在这种情况下,
        超过3小时的创建将被忽略。因此
        modifiedDate
        也被忽略
    • 您希望使用谷歌应用程序脚本实现这一点
    如果我的理解是正确的,这次修改怎么样?请把这看作是几个答案中的一个。此修改脚本的流程如下所示

    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;
    };
    
    流量:
  • 检索文件夹中的所有文件
  • 对于每个文件,检索文件名和日期字符串
  • 将文件名中的日期字符串转换为日期对象。并与今天进行了比较。当文件名中的日期早于今天时,文件信息将添加到数组中以进行删除
  • 从检索到的文件信息中删除文件
  • 修改脚本: 修改脚本时,请修改
    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;
    };
    
    函数getOldFileIDs(){ var folder=DriveApp.getFolderById('xxxxxxxxxxxxxxxxxxxxxx'); 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); 如果(/\d{4}\/\d{2}\/\d{2}/.test(dateFromFilename)){//此处,则检查日期字符串的格式。 var date=新日期(dateFromFilename).getTime(); 如果(日期<今天){ 推送({id:file.getId(),日期:file.getDateCreated(),所有者:file.getOwner().getEmail()}); } } } 返回obj; };
    参考资料:
    如果我误解了你的问题,而这不是你想要的结果,我道歉