我想将GAS中的Google文档(或任何其他文档)还原到较早的版本。我设法访问了修订版,甚至下载了较旧的修订版,但是如何将文档还原到指定的修订版?
答案 0 :(得分:3)
如果我的理解正确,那么这个答案如何?
不幸的是,在当前阶段,API不能通过脚本直接更改Google Docs的修订版。因此,作为几种解决方法之一,我建议使用导出的数据覆盖Google Docs文件。此解决方法的流程如下。
通过此流程,Google Docs文件将还原为以前的版本。
重要的一点是,当Google Docs文件作为Microsoft Docs文件导出时,在大多数情况下,覆盖的Google Docs文件不会从该版本的原始Google Docs更改。但是我不确定这种解决方法是否在所有情况下都能正常使用。所以请注意这一点。
此替代方法的示例脚本如下。在运行脚本之前,请先please enable Drive API at Advanced Google services。
function myFunction() {
var revisionId = "1"; // Please set the revision ID you want to revert.
var googleDocsFileId = "###"; // Please set the Google Docs file ID.
var endpoints = Drive.Revisions.get(googleDocsFileId, revisionId).exportLinks;
var keys = Object.keys(endpoints);
for (var i = 0; i < keys.length; i++) {
if (keys[i].indexOf("application/vnd.openxmlformats-officedocument") > -1) {
var endpoint = endpoints[keys[i]] + "&access_token=" + ScriptApp.getOAuthToken();
var mediaData = UrlFetchApp.fetch(endpoint).getBlob();
Logger.log(mediaData.getBytes().length)
Drive.Files.update({}, googleDocsFileId, mediaData);
break;
}
}
}
如果这不是您想要的方向,我深表歉意。
答案 1 :(得分:1)
您可以按照these instructions手动进行操作。另外,如您在revision resource documentation中所见,您可以更改published
属性以将特定修订标记为“活动修订”。
要通过Apps脚本执行此操作,您需要进行enable Google Advanced Services,这将允许您完全使用API。然后,您可以使用update
方法(Documentation here),使用所需修订的ID,并将其published
属性更改为true
。
请记住,根据文档所述:
这仅适用于Google文档。