google-apps-script - 如何复制具有 protected 范围的工作表?

标签 google-apps-script google-sheets

我已经建立了一个模板表,我每周都会复制它。我注意到当我去复制它时,没有任何 protected 范围与它一起复制。是否可以使用 Google Apps 脚本将完全相同的 protected 范围复制到复制的工作表中?每周都会为我节省很多时间。

最佳答案

注意:Web Apps 上发布了一个类似的问题,所以我正在改编 my answer 的一部分就本案而言。

使用 sheet.getProtections方法,您可以获得给定工作表上的保护数组,并循环它们,在目标工作表上创建它们的类似物。这有点烦人,因为似乎没有方法可以简单地将保护克隆到另一个范围。 (可以更改保护范围,但这会将其移动到新范围,而不是复制。)
因此,在下面的函数中,我执行以下操作:

  • 使用 p.getRange().getA1Notation(); 获取每个 protected 范围的 A1 符号
  • p2 = sheet2.getRange(rangeNotation).protect();保护目标表的对应范围
  • 设置 properties新保护p2根据原始保护的属性p .如果保护不只是警告类型,这包括删除/添加编辑器。
  • function duplicateSheetWithProtections() {
      var ss = SpreadsheetApp.getActiveSpreadsheet(); 
      var sheet = ss.getSheetByName('Template');
      var sheet2 = sheet.copyTo(ss).setName('My 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());  // remove editors 
          p2.addEditors(p.getEditors());      // except those permitted for original
          // p2.setDomainEdit(p.canDomainEdit()); //  only if using an Apps domain 
        }
      }
    } 
    

    关于google-apps-script - 如何复制具有 protected 范围的工作表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27607651/

    相关文章:

    google-apps-script - 无法使用 Google App Scripts 创建 KuCoin 订单

    google-apps-script - G Suite 市场 : At least one extension must be enabled and selected extensions must be configured

    google-apps-script - Google Apps 脚本格式

    python - 将 Google 表格日期序列值转换为人类可读的日期

    google-apps-script - Google 表格自动递增 ID/主键

    google-apps-script - 格式化绝对值的脚本不起作用

    google-apps-script - GAS 中的脚本和自定义函数有什么区别?

    javascript - Google Apps 脚本 : How to check if a calendar event has been marked as deleted manually

    google-apps-script - 插入新行时触发谷歌电子表格上的脚本

    javascript - 带有 Google Apps 脚本的 JQuery Mobile