如何在没有高级驱动器服务的情况下管理共享功能:“禁用复制和下载”?
目前我解决这个问题的方法是:
function mySolveAboutAdvancedService(id) {
var file = Drive.Files.get(id);
file.labels.restricted = true;
Drive.Files.update(file, id);
}
为什么我可以更改所有设置,但不能在没有高级驱动器服务的情况下更改此设置?
谢谢
发布于 2020-02-13 08:06:30
var file = Drive.Files.get(id);file.labels.restricted = true;Drive.Files.update(file,id);
如果我的理解是正确的,那么这个答案如何?请将此视为几个可能答案中的一个。
问题和解决方法:
谷歌高级服务的驱动接口使用驱动接口v2。在这种情况下,labels.restricted是用于驱动接口v2的,并且,官方文档如下所述。
labels.restricted:警告:此项目已弃用。已弃用-请改用copyRequiresWriterPermission。
这样,当驱动接口v3使用{labels: {restricted: true}}时,不能在没有错误的情况下使用它。但是,当驱动接口v2与UrlFetchApp一起使用时,仍然可以使用{labels: {restricted: true}}。通过这个,你的脚本使用高级谷歌服务的驱动API工作。
为了在不使用高级Google服务的情况下实现您的脚本,请直接向Drive API v3的端点请求(本例中使用v3 )。使用UrlFetchApp的{copyRequiresWriterPermission: true}请求体。示例脚本如下所示。
示例脚本:
function mySolveAboutAdvancedService() {
var id = "###"; // Please set the file ID.
var url = "https://www.googleapis.com/drive/v3/files/" + id;
var params = {
method: "patch",
contentType: "application/json",
payload: JSON.stringify({copyRequiresWriterPermission: true}),
headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}
};
var res = UrlFetchApp.fetch(url, params);
Logger.log(res.getContentText())
}注意:
{labels: {restricted: true}}和{copyRequiresWriterPermission: true}。函数mySolveAboutAdvancedService() { var ID = "###";//请设置文件id,var url = "https://www.googleapis.com/drive/v2/files/“+ id;var params ={ method:"put",contentType:”应用程序/json“,有效负载: JSON.stringify({copyRequiresWriterPermission: true}),//或者有效负载: JSON.stringify({labels:{restricted: true}}) headers:{Authorization:”###“+ ScriptApp.getOAuthToken()} };var res = UrlFetchApp.fetch(url,params);Logger.log(res.getContentText()) }
参考文献:
如果我误解了你的问题,这不是你想要的方向,我道歉。
https://stackoverflow.com/questions/60198377
复制相似问题