繁体   English   中英

如何使用Google脚本将修订历史记录保留在Google云端硬盘中,以便在特定日期之后编辑文件?

[英]How Can I Use A Google Script to Keep Revision History in Google Drive for Files Edited After A Certain Date?

我想创建一个Google脚本,该脚本将访问我的Google云端硬盘并访问在特定日期之后修改的所有文件(例如,过去30天中修改的所有文件),并将所有修订版本设置为永久保存。 本质上,这样做的目的是将修订历史记录永久保留在Google云端硬盘中,但是由于每次都对每个文件进行修订既多余又浪费资源,因此我计划每15或30天运行一次。

我在网上找不到类似的东西,所以我想最好问一下StackExchange社区。

也许您需要查看此文档以帮助您入门。

要列出文件的修订,您将需要Revisions:list方法。

这是一个示例 .js代码:

/**
 * Retrieve a list of revisions.
 *
 * @param {String} fileId ID of the file to retrieve revisions for.
 * @param {Function} callback Function to call when the request is complete.
 */
function retrieveRevisions(fileId, callback) {
  var request = gapi.client.drive.revisions.list({
    'fileId': fileId
  });
  request.execute(callback);
}

其他方法也可用:

只需使用此方法即可形成所需的功能。

下面的代码按照我的描述进行操作,但是(与所有Google脚本一样)只能运行6分钟(如果您当前使用的是EAP,则只能运行30分钟)。

function setRevisionPermanent() {

  var rateLimit = 200; 

  var today = new Date();  

  var oneYear = new Date(today.getTime() - 365 * 24 * 60 * 60 * 1000); 
  var oneMonth = new Date(today.getTime() - 30 * 24 * 60 * 60 * 1000);  
  var startTime = oneMonth.toISOString();

  var search = '(trashed = false) and (modifiedDate > "' + startTime + '")';
  var files  = DriveApp.searchFiles(search);

  while (files.hasNext()) {

    var file = files.next();    
    var fileName = file.getName();
    var fileId = file.getId();

    try {

      var revisions = Drive.Revisions.list(fileId).items;     

      for (var i = 0 ; i < revisions.length ; i ++) {         
        var rclone = revisions[i];
        rclone.pinned = i < revisions.length - rateLimit ? false : true;
        var request = Drive.Revisions.update(rclone, fileId, revisions[i].id);   

      }

    } catch (e) {

      Logger.log(e.message);

    }

  }  
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM