通过高级云端硬盘服务还原Google文档

时间:2016-02-29 16:40:31

标签: google-apps-script google-drive-api google-docs

我试图弄清楚如何使用高级驱动器服务以编程方式恢复到文件的固定版本。

我在这里查看了文档 https://developers.google.com/apps-script/advanced/drive#listing_revisions和这里 https://developers.google.com/drive/v3/reference/#Revisions

我已经尝试了

var revs = Drive.Revisions.list(fileId);
var revArr = revs.items;
var len = revArr.length;
var rev = revArr[len - 2];
var rev2 = revArr[len - 1];
var revId = rev.id;
var revId2 = rev2.id;
// These will throw an id mismatch error.
Drive.Revisions.update(rev, fileId, revId2);
Drive.Revisions.patch(rev, fileId, revId2); 
// These don't seem to revert the file.
Drive.Revisions.update(rev2, fileId, revId2);
Drive.Revisions.patch(rev2, fileId, revId2);

我只想获取该文件并将其还原为修订版。 我不想下载旧文件,但请将当前文件恢复原状,然后再将其恢复原状。
例如。 FileA rev0 -> {Edited: Change Text to gibberish} -> FileA rev1
(使用ADS)Drive.Revisions.revertTo(rev0.id); //Or something like that.

我尝试了很多不同的东西,但似乎无法让它发挥作用。

1 个答案:

答案 0 :(得分:0)

您可以尝试获取docx导出链接,看看它恢复了多少修订版本:

var response = UrlFetchApp.fetch(
  "https://docs.google.com/feeds/download/documents/export/Export?id=<FILEID>&revision=<NUMBER>&exportFormat=docx",
  {
    headers: {
      "Authorization" : "Bearer " + ScriptApp.getOAuthToken()
    }
  }
);

var blob = response.getBlob();

var resource = {
  title: <DOCUMENT_TITLE>,
  parents: [
    {
      "id": <FOLDER_ID>, 
      "kind": "drive#fileLink"
    }
  ],
  mimeType: 'application/vnd.google-apps.document'
};

Drive.Files.update(resource, fileId, blob);

This post给了我一些关于尝试尝试的提示。