【问题标题】:Google Apps Script, get rid of copy/download optionGoogle Apps 脚本,摆脱复制/下载选项
【发布时间】:2020-08-31 03:22:49
【问题描述】:

我想知道是否有一种方法可以使用 Google Apps 脚本来共享 Google 文档或 Google 表格,但以编程方式为文档的查看者/评论者禁用复制/下载功能?正常共享 Google Doc 或 Sheet 时,您可以转到设置图标并取消选择这些选项:

但是我可以通过 Google Apps 脚本做到这一点吗?

作为后续行动,有没有办法也为编辑器禁用这些选项?我希望能够与某人共享文档,让他们成为编辑,但阻止他们与其他任何人共享。谢谢。

【问题讨论】:

  • @TheMaster setShareableByEditors的方法是在你的评论中“编辑者可以更改权限和分享”。你知道Drive服务中控制“查看者和评论者可以看到下载、打印和复制选项”的方法吗?
  • @Tanaike 不。这就是我添加“相关”而不是重复或其他内容的原因。我搜索了应用程序脚本文档,但没有找到。
  • @TheMaster 谢谢。当有这种方法时,我认为脚本会变得更简单。在现阶段,Drive API v2 似乎也无法控制它。所以我建议使用 Drive API v3。这样,就需要使用 fetch。

标签: google-apps-script google-drive-api file-sharing


【解决方案1】:

在这种情况下,使用 Drive API 怎么样?我认为您可以使用 Drive API 设置它们。在这个答案中,使用了Drive API v3的“文件:更新”的方法。

示例脚本:

在使用此脚本之前,please enable Drive API at Advanced Google services

function myFunction() {
  const fileId = "###";  // Please set the file ID.

  const url = "https://www.googleapis.com/drive/v3/files/" + fileId;
  const res = UrlFetchApp.fetch(url, {
    method: "patch",
    headers: {authorization: "Bearer " + ScriptApp.getOAuthToken()},
    contentType: "application/json",
    payload: JSON.stringify({viewersCanCopyContent: false, writersCanShare: false}),
  });
  console.log(res.getContentText())
  
  // DriveApp.createFile(blob)  // This comment line is used for automatically detecting the scope of "https://www.googleapis.com/auth/drive"
}

注意:

  • writersCanShare 用于“编辑者可以更改权限和共享”

  • viewersCanCopyContent 用于“查看者和评论者可以看到下载、打印和复制选项”

    • 当我看到官方文档时,viewersCanCopyContentWarning: This item is deprecated. Deprecated - use copyRequiresWriterPermission instead.。但是当使用copyRequiresWriterPermission 时,该检查无法控制。所以,在这个答案中,我使用了viewersCanCopyContent
    • 对于未来的更新,{viewersCanCopyContent: false, copyRequiresWriterPermission: false, writersCanShare: false} 可能更适合而不是 {viewersCanCopyContent: false, writersCanShare: false}
  • 以上示例,两项检查均未选中。

    • copyRequiresWriterPermission可以使用时,我认为Drive API v2可能可以如下使用它。但是我现在测试的时候,好像不能控制“查看者和评论者可以看到下载、打印和复制的选项”。

        Drive.Files.patch({copyRequiresWriterPermission:false,writersCanShare:false}, fileId);
      
  • 例如,当使用viewersCanCopyContent: true, writersCanShare: true 时,会同时检查两个检查。

参考资料:

【讨论】:

  • 非常感谢您在这个问题上的帮助。只是为了澄清,没有办法控制编辑的复制/下载,对吗?非常感谢您的帮助。
  • @Lle.4 关于您的附加问题,有capabilities.canCopycapabilities.canDownload 用于控制复制和下载。但在当前阶段,这些值似乎无法通过 API 更改。例如,将其作为未来对 Google 问题跟踪器的请求如何? developers.google.com/issue-tracker我深表歉意,我不能很快解决你的额外问题。顺便问一下,关于你的第一个问题,请问是否解决了?
猜你喜欢
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
相关资源
最近更新 更多