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

修改Google Sheets权限:编辑者转查看者代码报错求助

问题分析与解决方案

错误原因

报错TypeError: file.getEditors is not a function的核心问题出在:
你把file变量赋值成了单个工作表(Sheet)对象(通过getActiveSheet()获取),但getEditors()、getAccessControlList()这类权限管理方法是属于整个电子表格(Spreadsheet)对象或者Drive文件对象的,Sheet对象根本没有这些方法,所以才会触发报错。

修正后的代码

下面的代码能实现把所有拥有编辑权限的用户转为查看者(要是想转成评论者,替换对应的权限代码就行):

function cambiarPermisos() {
  // 先拿到整个电子表格对象,不是单个工作表
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  // 获取所有有编辑权限的用户
  var editors = spreadsheet.getEditors();
  
  // 逐个处理编辑者
  for (var i = 0; i < editors.length; i++) {
    var user = editors[i];
    var email = user.getEmail();
    
    // 跳过自己,别把自己的编辑权限搞没了
    if (email === Session.getActiveUser().getEmail()) {
      continue;
    }
    
    // 移除编辑权限,添加查看权限
    spreadsheet.removeEditor(email);
    spreadsheet.addViewer(email);
    
    // 如果要转成评论者,把上面两行换成下面的:
    // spreadsheet.removeEditor(email);
    // spreadsheet.addCommenter(email);
  }
}

额外提醒

  • 一定要跳过自己的账号,不然运行后自己可能失去编辑权限,没法再修改表格或脚本。
  • 如果改完代码还是报错,那才可能是域管理员限制了脚本修改权限的功能,得联系管理员确认设置。
  • Google Apps Script里的权限类型说明:
    • DriveApp.AclRole.OWNER:所有者
    • DriveApp.AclRole.EDITOR:编辑者
    • DriveApp.AclRole.COMMENTER:评论者
    • DriveApp.AclRole.VIEWER:查看者

内容的提问来源于stack exchange,提问作者Carlos E Gomez Rivera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:45:10