如何使用App Script移除自身Google文档所有者身份并移交权限?
Google文档添加用户并移除自身权限的解决方案
你说的代码没法移除自身权限,核心原因就是文档所有者没法主动删掉自己的所有者身份,得先把其他用户加进来,必要时转移所有权,才能顺利移除自己的权限。下面是具体的实现方法:
两种可行方案
方案1:添加编辑者后移除自身编辑权限(保留所有者身份)
这种方式下你还是文档所有者,但会失去编辑权限,文档依然留在你的云端硬盘里:
function addUserAndRemoveEditAccess() { // 创建新文档,也可以用DocumentApp.openById('文档ID')打开已有文档 const doc = DocumentApp.create('document'); // 替换成要添加的用户邮箱 const targetUser = 'target@example.com'; // 先把目标用户设为编辑者 doc.addEditor(targetUser); // 等2秒让权限同步,避免操作延迟导致失败 Utilities.sleep(2000); // 获取自己的邮箱,移除编辑权限 const myEmail = Session.getActiveUser().getEmail(); doc.removeEditor(myEmail); }
方案2:转移所有权后彻底移除自身所有权限
如果想完全和这个文档撇清关系,就得先把所有权转出去,再删掉自己的权限:
function transferOwnershipAndLeave() { const doc = DocumentApp.create('document'); const targetUser = 'target@example.com'; // 必须先把目标用户加为编辑者,才能转移所有权 doc.addEditor(targetUser); // 转移文档所有权给目标用户 doc.setOwner(targetUser); // 等待权限同步 Utilities.sleep(2000); // 移除自己的所有权限(此时已经不是所有者,用removeViewer即可) const myEmail = Session.getActiveUser().getEmail(); doc.removeViewer(myEmail); }
注意点
- 转移所有权的话,目标用户如果是外部用户,得先接受共享邀请;如果是同域的Google Workspace用户,操作会更顺畅
- 一旦执行
setOwner(),你就再也管不了这个文档了,操作前一定要确认好 - 要是只想失去编辑权限但还留着所有者身份,用方案1就行,文档会一直在你的云端硬盘里
内容的提问来源于stack exchange,提问作者Brady Hansen
相关产品推荐
相关产品推荐

