【发布时间】:2022-01-13 19:34:12
【问题描述】:
以下代码用于在执行分析脚本后重新初始化文件。目标是清除已为新请求手动填写的单元格。
错误是在分析过程结束时得到的,我无法追查问题的根源。
// Before you run the script, please enable Drive API at Advanced Google services.
function resetFile() {//restore previous version of the file
var revisionId = "1"; // Please set the revision ID you want to revert.
var googleDocsFileId = SpreadsheetApp.getActiveSpreadsheet().getId(); // 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;
}
}
}
function resetSource(){//pas nécessaire
var file= SpreadsheetApp.getActiveSpreadsheet().getRangeByName("FileID").getValue();
var fileID = DriveApp.getFileById(file);
fileID.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.EDIT);
}
2022 年 1 月 14 日更新
【问题讨论】:
-
代码本身不足以让我们复制您的问题。请提供示例文件和屏幕截图。另外,你能展示一下分析过程是什么吗?见minimal reproducible example。
-
我必须为我糟糕的英语水平道歉。不幸的是,我无法理解你的问题。我可以问你目标的细节吗?如果可以的话,请将示例输入和输出情况显示为图片?
-
我的脚本
createfile.gs帮助我创建了一个文件。在执行结束时,它调用resetFile.gs以恢复到表的先前版本(干净版本)。如您所见,resetFile进程卡在第 6 行,因为var revisionId有问题。您对此错误有任何想法吗? -
感谢您的回复。首先,从您的演示脚本来看,如果您在stackoverflow.com/a/57898660 使用我的示例脚本,我深表歉意,我的示例脚本不能直接用于您的情况。从您的回复中,我提出了一个修改点作为答案。你能确认一下吗?如果这不是您问题的直接解决方案,我再次道歉。
标签: google-apps-script google-sheets google-drive-api