如何快速实现Google Sheet每行仅对指定用户开放编辑权限
方案1:使用Google Apps Script批量设置行权限(推荐,适合100条以上数据)
- 打开你的Google Sheet,点击顶部菜单栏「扩展程序」→「Apps Script」打开脚本编辑器
- 清空默认生成的代码,粘贴以下代码:
function setRowPermissions() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const allData = sheet.getDataRange().getValues(); // 可根据你的表格情况修改以下三个参数 const EMAIL_COLUMN = 1; // 存储用户邮箱的列号,A列对应1、B列对应2,以此类推 const START_ROW = 2; // 第一个用户所在的行号,如有1行表头则填2 const EDIT_RANGE = "B:F"; // 允许用户编辑的列范围,需要整行可编辑则改为`${row}:${row}` for (let i = START_ROW - 1; i < allData.length; i++) { const userEmail = allData[i][EMAIL_COLUMN - 1]; const row = i + 1; // 跳过空邮箱、格式无效的行 if (!userEmail || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(userEmail)) continue; // 锁定当前行的目标范围,仅所有者可编辑 const targetRange = sheet.getRange(`${EDIT_RANGE.replace(/\d/g, '')}${row}`); const protection = targetRange.protect().setDescription(`用户权限行_${row}_${userEmail}`); protection.removeEditors(protection.getEditors()); if (protection.canDomainEdit()) protection.setDomainEdit(false); // 添加对应用户的编辑权限 protection.addEditor(userEmail); } SpreadsheetApp.getUi().alert("所有行权限配置完成"); }
- 保存项目,点击运行按钮,首次运行需要完成授权:出现「此应用未经验证」提示属于正常情况,点击「高级」→「前往你的项目名称」即可继续授权
- 脚本运行完成后,所有用户自动获得对应行的编辑权限,其他行对他们为只读状态
方案2:手动批量配置(无代码,适合少量数据)
- 先设置整表默认权限为只读:点击右上角「共享」,通用权限设为「受限」,仅你自己可编辑
- 点击顶部菜单栏「数据」→「保护工作表和范围」,右侧弹出配置面板
- 点击「添加工作表或范围」,选择「范围」,输入第一个用户的可编辑行范围,点击「设置权限」,选择「仅你自己可以编辑此范围」,再点击「添加编辑者」填入对应用户邮箱后保存
- 重复操作完成所有行配置,150条数据熟练操作10分钟内可完成
注意事项
- 配置权限前建议先备份整份表格,避免操作失误丢失原有权限配置
- 后续新增用户时,只需在表格末尾补充对应行和邮箱,重新运行一次脚本即可自动完成新用户权限配置
- 用户打开表格时仅自己的对应行处于可编辑状态,其余行都会被锁定无法修改
内容的提问来源于stack exchange,提问作者Samuel Little
相关产品推荐
相关产品推荐

