复制Spreadsheet时如何保留Protected Ranges的自定义编辑权限?
解决Google Sheets复制后保留受保护区域自定义权限的问题
默认复制Spreadsheet时,受保护范围会保留,但自定义的用户编辑权限不会被继承,你可以通过以下两种方法解决:
方法1:手动迁移权限(适合少量保护范围)
- 打开原2023预算表,进入数据 > 受保护的范围和工作表
- 逐个选中带自定义权限的保护范围,点击「权限」,记录所有拥有编辑权限的用户邮箱(比如你的经理)
- 打开复制后的2024预算表,同样进入数据 > 受保护的范围和工作表
- 对每个对应保护范围,点击「权限」,选择「自定义」,添加之前记录的邮箱并设置为「可编辑」
方法2:用Apps Script批量迁移(适合大量保护范围)
- 打开原2023预算表,点击扩展 > Apps 脚本
- 替换默认代码为以下脚本,运行后会导出所有保护范围的权限信息到新工作表:
function exportProtectedRangePermissions() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const protectedRanges = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE); const outputSheet = ss.insertSheet("ProtectionPermissionsBackup"); outputSheet.appendRow(["保护范围名称", "范围地址", "可编辑用户邮箱"]); protectedRanges.forEach(range => { const editors = range.getEditors().map(e => e.getEmail()); outputSheet.appendRow([ range.getDescription(), range.getRange().getA1Notation(), editors.join(", ") ]); }); }
- 运行脚本并授权,生成名为
ProtectionPermissionsBackup的工作表后,复制里面的权限数据 - 打开2024预算表,再次进入扩展 > Apps 脚本,使用以下脚本批量导入权限:
function importProtectedRangePermissions() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const backupSheet = ss.getSheetByName("ProtectionPermissionsBackup"); if (!backupSheet) { SpreadsheetApp.getUi().alert("未找到备份工作表,请先将原表的ProtectionPermissionsBackup复制到当前表格"); return; } const data = backupSheet.getDataRange().getValues(); const protectedRanges = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE); for (let i = 1; i < data.length; i++) { const [desc, rangeAddr, editorsStr] = data[i]; const targetRange = protectedRanges.find(r => r.getDescription() === desc || r.getRange().getA1Notation() === rangeAddr); if (targetRange) { const editors = editorsStr.split(", ").filter(e => e); editors.forEach(email => { try { targetRange.addEditor(email); } catch (e) { console.log(`无法添加用户 ${email} 到范围 ${rangeAddr}: ${e.message}`); } }); } } }
- 将原表的
ProtectionPermissionsBackup工作表复制到2024预算表中,运行导入脚本并授权,即可批量恢复所有自定义编辑权限
注意事项
- 执行脚本需要你同时拥有原表和新表的编辑权限
- 若保护范围未设置描述,脚本会通过范围地址匹配,需确保原表和新表的保护范围地址一致
- 若用户邮箱有变更,需手动调整备份数据中的邮箱地址
内容的提问来源于stack exchange,提问作者Kailey Jensen
相关产品推荐
相关产品推荐

