You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script移除Drive所有文件单用户权限报错解决

问题根因
  • 触发No such user报错的直接原因:未做权限校验直接调用removeEditor(),只要当前文件没有单独给目标邮箱授予编辑权限(比如用户是查看者身份、通过公共链接/组织域共享获得权限、根本不在该文件的权限列表内),调用该方法就会抛出这个错误。
  • 日志打印getEditors()返回结果仅显示[DriveUser]属于正常现象:这是DriveUser类的默认字符串转换结果,直接打印整个用户对象数组不会输出真实邮箱,必须遍历数组调用每个用户实例的getEmail()方法才能拿到具体的邮箱地址。
  • 原脚本存在逻辑遗漏:仅调用removeEditor()不会移除用户的查看者权限,就算不报错,用户如果被授予查看权限依然可以访问文件;另外DriveApp.getFiles()默认仅能获取你「我的云端硬盘」下的文件,不会覆盖共享云端硬盘、他人共享给你的文件。
修复方案
  • 权限移除前增加校验逻辑:先获取当前文件的编辑、查看用户邮箱列表,确认目标用户确实在权限列表中再执行移除操作,避免无效调用抛错。
  • 统一用removeViewer()方法移除权限:该方法会自动清除目标用户对文件的所有访问权限,无论用户当前是编辑还是查看身份,无需分开调用两个移除方法。
  • 增加异常捕获:针对你没有权限修改共享设置的文件(比如你是编辑但不是所有者的文件),捕获错误后跳过即可,避免整个脚本中断运行。
  • 排查权限时正确获取用户邮箱:遍历getEditors()/getViewers()返回的用户数组,逐个调用getEmail()拿到真实邮箱地址,不要直接打印整个数组。
修正后可直接运行的代码
function removeTargetUserAccess() {
  // 配置需要移除所有访问权限的目标用户邮箱
  const TARGET_EMAIL = "mickey@mouse.com";
  // 获取我的云端硬盘下的所有文件
  const fileIterator = DriveApp.getFiles();

  while (fileIterator.hasNext()) {
    const currentFile = fileIterator.next();
    try {
      // 拿到当前文件所有编辑、查看用户的邮箱列表
      const editorMails = currentFile.getEditors().map(user => user.getEmail());
      const viewerMails = currentFile.getViewers().map(user => user.getEmail());

      // 仅当目标用户确实在权限列表中时执行移除
      if (editorMails.includes(TARGET_EMAIL) || viewerMails.includes(TARGET_EMAIL)) {
        currentFile.removeViewer(TARGET_EMAIL);
        console.log(`已移除${TARGET_EMAIL}对文件「${currentFile.getName()}」的访问权限`);
      }
    } catch (error) {
      // 跳过无权限修改共享设置的文件,打印日志后继续处理下一个
      console.log(`处理文件「${currentFile.getName()}」失败:${error.message}`);
    }
  }
}
注意事项
  • 如果文件开启了公共链接访问/组织域内全员可访问:单独移除单个用户权限不会生效,需要先将文件共享权限修改为「受限」,再执行上述移除操作。
  • 脚本首次运行会弹出Google授权提示,需要授予脚本云端硬盘读写权限才能正常执行。
  • 如果你的账号下文件数量较多,脚本可能触发Google Apps Script的运行时长限额,可以分批处理文件,每次处理指定数量的文件即可。
  • 如果需要处理共享云端硬盘内的文件,需要额外开启Drive高级服务,编写遍历共享云端硬盘的逻辑。

内容的提问来源于stack exchange,提问作者Tak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 07:21:55