【问题标题】:google sheet apps script how duplicate tab with same permissions谷歌工作表应用程序脚本如何复制具有相同权限的选项卡
【发布时间】:2020-04-24 23:57:16
【问题描述】:

我使用此脚本复制和重命名模板表

function duplicate() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var lastTabName = ss.getSheets().pop().getSheetName();  // Modified
  var sheet = ss.getSheetByName('Temp').copyTo(ss);

  // Duplica Template
  sheet.setName(isNaN(lastTabName) ? 1 : Number(lastTabName) + 1);  // Modified
  sheet.getRange("G2").setValue(Number(lastTabName) + 1 );

  ss.setActiveSheet(sheet);    
}

在该模板表中,我有单元格 H1 受保护,只有我可以编辑,但不是电子表格的所有其他编辑器,范围 B10:C136 也相同(我只允许编辑)

我怎样才能修改那个脚本,所以当我运行它时,模板会以相同的保护和相同的条件复制,而我是唯一能够编辑这些范围的人?

谢谢!

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    试试这个 -

    function duplicate() {
    
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var lastTabName = ss.getSheets().pop().getSheetName();  // Modified
      var templateSheet = ss.getSheetByName('Temp')
      var newSheet = templateSheet.copyTo(ss);
      var protections = templateSheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
    
      // Duplicate Template
      newSheet.setName(isNaN(lastTabName) ? 1 : Number(lastTabName) + 1);  // Modified
      newSheet.getRange("G2").setValue(Number(lastTabName) + 1 );
    
      for (var i = 0; i < protections.length; i++) {
        var protection = protections[i];
        var protectedRange = protection.getRange().getA1Notation();
        var newProtection = newSheet.getRange(protectedRange).protect();
      }
    
      ss.setActiveSheet(newSheet);  
    }
    

    请随意探索本文档here中的更多示例。

    【讨论】:

    • 嗨,谢谢...它有效,我的问题是,如果编辑器运行脚本,那么权限不仅允许我,还允许他编辑那些单元格,我不知道有没有办法解决
    猜你喜欢
    • 2020-04-03
    • 2021-06-21
    • 1970-01-01
    • 2014-10-21
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多