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

复制Spreadsheet时如何保留Protected Ranges的自定义编辑权限?

解决Google Sheets复制后保留受保护区域自定义权限的问题

默认复制Spreadsheet时,受保护范围会保留,但自定义的用户编辑权限不会被继承,你可以通过以下两种方法解决:

方法1:手动迁移权限(适合少量保护范围)

  • 打开原2023预算表,进入数据 > 受保护的范围和工作表
  • 逐个选中带自定义权限的保护范围,点击「权限」,记录所有拥有编辑权限的用户邮箱(比如你的经理)
  • 打开复制后的2024预算表,同样进入数据 > 受保护的范围和工作表
  • 对每个对应保护范围,点击「权限」,选择「自定义」,添加之前记录的邮箱并设置为「可编辑」

方法2:用Apps Script批量迁移(适合大量保护范围)

  1. 打开原2023预算表,点击扩展 > Apps 脚本
  2. 替换默认代码为以下脚本,运行后会导出所有保护范围的权限信息到新工作表:
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(", ")
    ]);
  });
}
  1. 运行脚本并授权,生成名为ProtectionPermissionsBackup的工作表后,复制里面的权限数据
  2. 打开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}`);
        }
      });
    }
  }
}
  1. 将原表的ProtectionPermissionsBackup工作表复制到2024预算表中,运行导入脚本并授权,即可批量恢复所有自定义编辑权限

注意事项

  • 执行脚本需要你同时拥有原表和新表的编辑权限
  • 若保护范围未设置描述,脚本会通过范围地址匹配,需确保原表和新表的保护范围地址一致
  • 若用户邮箱有变更,需手动调整备份数据中的邮箱地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:52:41