还原 Excel 文件的修订 - 驱动器 API

Revert Revision of an Excel File - Drive API

我的云端硬盘(网络版)上有一个 Excel 文件。那个 Excel 有很多版本。我经常要求文件恢复到特定版本而不删除最新版本。

我有以下代码:

function revertRevisionExcel() {
  var revisionId = "######"; // Revision ID to revert.
  var fileId = "#####"; // Set the file ID.

  var endpoint = "";
  var token = ScriptApp.getOAuthToken();
  Logger.log(token);
  var res = Drive.Revisions.get(fileId, revisionId);

  endpoint =
    "https://www.googleapis.com/drive/v3/files/" +
    fileId +
    "/revisions/" +
    revisionId +
    "?pageToken=" +
    token;

  var mediaData = UrlFetchApp.fetch(endpoint).getBlob();
  Drive.Files.update({}, fileId, mediaData);
}

当我 运行 时,它显示错误 401“需要登录”。任何人都可以指导我吗?

修改点:

关于When I run it shows me the error 401 "Login Required". Could any one please guide me?你的问题,看到你的脚本,我觉得需要做如下修改。

  • tokenres 未使用。
  • 我认为var token = ScriptApp.getOAuthToken()不能用于?pageToken=" + token的查询参数。
    • 我想你的问题Login Required就是因为这个原因。在这种情况下,请将 var token = ScriptApp.getOAuthToken() 检索到的访问令牌用于请求 header.
  • 为了从特定修订中检索 blob,请在查询参数中使用 alt=media

当以上修改点反映到你的脚本中后,变成如下

修改后的脚本:

function revertRevisionExcel() {
  var revisionId = "######"; // Revision ID to revert.
  var fileId = "#####"; // Set the file ID.

  var endpoint = "https://www.googleapis.com/drive/v3/files/" + fileId + "/revisions/" + revisionId + "?alt=media";
  var token = ScriptApp.getOAuthToken();
  var mediaData = UrlFetchApp.fetch(endpoint, {headers: {authorization: "Bearer " + token}}).getBlob();
  Drive.Files.update({}, fileId, mediaData);
}

注:

  • 在此修改后的脚本中,假设您已经在高级 Google 服务中启用了 Drive API,并且 revisionIdfileId 的值是有效值.请注意这一点。

参考文献: