Wil*_*emS 2 google-apps-script google-drive-api
我想将 GAS 中的 Google 文档(或任何其他文档)恢复到较早的版本。我设法访问了修订,甚至下载了较旧的修订,但如何将文档恢复到指定的修订?
如果我的理解是正确的,这个答案怎么样?
不幸的是,在现阶段,Google Docs 的修订版本不能通过带有脚本的 API 直接更改。因此,作为几种解决方法之一,我建议使用导出的数据覆盖 Google Docs 文件。此变通方法的流程如下。
通过此流程,Google Docs 文件将恢复到以前的版本。
重要的一点是,当 Google Docs 文件导出为 Microsoft Docs 文件时,在大多数情况下,覆盖的 Google Docs 文件不会从该版本的原始 Google Docs 更改。但我不确定这种解决方法是否适用于所有情况。所以请注意这一点。
此变通方法的示例脚本如下。在运行脚本之前,请在高级 Google 服务中启用 Drive API。
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果这不是您想要的方向,我深表歉意。
从 2020 年 1 月起,访问令牌不能与查询参数一起使用,如access_token=###。Ref所以请使用访问令牌到请求头而不是查询参数。如下。
var res = UrlFetchApp.fetch(url, {headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |