【问题标题】:Best way to maintain Google sheet permissions when creating a copy创建副本时维护 Google 工作表权限的最佳方法
【发布时间】:2022-02-04 00:13:54
【问题描述】:

每个月我都会创建一个 google sheet 文件的副本。它有相当多的具有权限的工作表 - 受保护的公式字段。问题是,创建副本时,只有所有者可以编辑受保护的字段,如果我想添加其他字段,则需要很长时间。 有两种可能的解决方案依赖于文件/复制/与同一个人共享,但是如果我想添加其他人,则需要相当长的时间。

  1. 保护整个工作表,然后我对每张工作表只有一个权限,因为它允许排除多个范围。添加其他范围和人员很容易。不确定我在保护整个工作表时是否会遇到一些问题?
  2. 仅保护单元格,有没有办法将它们分组或为一个权限添加多个范围?

有没有更好的方法来维护和添加人员到许多权限? 谢谢

【问题讨论】:

  • 只是为了确认一下,您想要的是复制文件并保留受保护范围的所有权限,因为副本只共享给您。如果是这种情况,恐怕您需要在 Apps 脚本中以编程方式进行。如果您想尝试该解决方案,请查看下面的答案
  • 感谢大卫,这看起来很棒。我想我也可以以编程方式添加人员?我会有点不愿意使用脚本,因为可能会出现意想不到的结果。另一个问题是我也在寻找保护工作表的最简单方法。如果我保护工作表而不是每页使用 20 个权限,那么添加编辑器并排除两个范围(输入字段和复选框)很容易。保护工作表是控制权限的最佳方式吗?
  • 您的具体用例是什么?是业务相关的吗?显示性能排名的电子表格?创建数据洞察仪表板怎么样,您将能够使用用户界面分离数据
  • 这是一个简单的谷歌表格,各种用户在几列中输入数据,受保护的单元格计算总数,分组数据,一列用于标记我已操作的数据。我正在尝试了解受保护字段的工作原理以及如何最好地改进文件本身。这是一个相当混乱的自动取款机。谢谢大卫,看看数据工作室可能不是一个坏主意

标签: google-sheets permissions copy protected


【解决方案1】:

您需要创建一个脚本来获取受保护范围的数组,并将相同的受保护范围复制到新工作表中。

function duplicateSheetWithProtections() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  sheet = ss.getSheetByName('original');
  sheet2 = sheet.copyTo(ss).setName('copy'); 
  var protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
  for (var i = 0; i < protections.length; i++) {
    var p = protections[i];
    var rangeNotation = p.getRange().getA1Notation();
    var p2 = sheet2.getRange(rangeNotation).protect();
    p2.setDescription(p.getDescription());
    p2.setWarningOnly(p.isWarningOnly());
    if (!p.isWarningOnly()) {
      p2.removeEditors(p2.getEditors());
      p2.addEditors(p.getEditors());
   }
  }
} 

您可以在Google's documentation查看更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 2014-10-13
    • 1970-01-01
    • 2013-07-06
    • 2014-12-13
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    相关资源
    最近更新 更多