还原 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?
你的问题,看到你的脚本,我觉得需要做如下修改。
token
和 res
未使用。
- 我认为
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,并且
revisionId
和 fileId
的值是有效值.请注意这一点。
参考文献:
我的云端硬盘(网络版)上有一个 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?
你的问题,看到你的脚本,我觉得需要做如下修改。
token
和res
未使用。- 我认为
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,并且
revisionId
和fileId
的值是有效值.请注意这一点。