Google apps script GDrive禁用复制和下载

Google apps script GDrive禁用复制和下载,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,我如何在没有高级驱动器服务的情况下管理共享功能:“禁用复制和下载” 目前我解决的问题是: 函数mysolveaboutavancedservice(id){ var file=Drive.Files.get(id); file.labels.restricted=true; Drive.Files.update(文件,id); } 您希望在不使用高级Google服务的情况下实现以下脚本 var file = Drive.Files.get(id); file.labels.restricted

我如何在没有高级驱动器服务的情况下管理共享功能:“禁用复制和下载”

目前我解决的问题是:

函数mysolveaboutavancedservice(id){
var file=Drive.Files.get(id);
file.labels.restricted=true;
Drive.Files.update(文件,id);
}
  • 您希望在不使用高级Google服务的情况下实现以下脚本

    var file = Drive.Files.get(id);
    file.labels.restricted = true;
    Drive.Files.update(file, id);
    
  • 您想知道不使用上述脚本无法实现“禁用复制和下载”的原因

如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

问题和解决方法: 高级Google服务的驱动API使用驱动API v2。在本例中,
labels.restricted
用于驱动API v2,并且,官方文档如下所示

标签。受限的
:警告:此项目已弃用。不推荐使用-请改用
copyRequiresWriterPermission

这样,当驱动器APIv3使用
{labels:{restricted:true}}
时,如果没有错误发生,就不能使用它。但是,当驱动器API v2与UrlFetchApp一起使用时,
{labels:{restricted:true}}
仍然可以使用。这样,使用高级Google服务的驱动API的脚本就可以工作了

为了在不使用高级Google服务的情况下实现您的脚本,请使用UrlFetchApp直接请求驱动器API v3的端点(在本例中使用v3),请求主体为
{copyRequiresWriterPermission:true}
。示例脚本如下所示

示例脚本: 注:
  • 如果要将驱动器API v2与UrlFetchApp一起使用,那么下面的脚本如何?在驱动器APIv2上,可以使用
    {labels:{restricted:true}}
    {copyRequiresWriterPermission:true}

    function mySolveAboutAdvancedService() {
      var id = "###";  // Please set the file ID.
    
      var url = "https://www.googleapis.com/drive/v2/files/" + id;
      var params = {
        method: "put",
        contentType: "application/json",
        payload: JSON.stringify({copyRequiresWriterPermission: true}),  // or payload: JSON.stringify({labels: {restricted: true}})
        headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}
      };
      var res = UrlFetchApp.fetch(url, params);
      Logger.log(res.getContentText())
    }
    
参考资料:

如果我误解了你的问题,而这不是你想要的方向,我道歉。

我的回答是否向你展示了你想要的结果?你能告诉我这件事吗?这对我的学习也很有用。如果这样做有效,其他与你有相同问题的人也可以将你的问题作为可以解决的问题。如果你对我的回答还有疑问,我道歉。那时候,我可以问一下你目前的情况吗?我想学习来解决你的问题。
function mySolveAboutAdvancedService() {
  var id = "###";  // Please set the file ID.

  var url = "https://www.googleapis.com/drive/v2/files/" + id;
  var params = {
    method: "put",
    contentType: "application/json",
    payload: JSON.stringify({copyRequiresWriterPermission: true}),  // or payload: JSON.stringify({labels: {restricted: true}})
    headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}
  };
  var res = UrlFetchApp.fetch(url, params);
  Logger.log(res.getContentText())
}