Скрипт приложений Google лист, как дублировать вкладку с такими же разрешениями - PullRequest
0 голосов
/ 25 апреля 2020

я использую этот скрипт для дублирования и переименования листа шаблона

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 то же самое (им разрешено редактировать только)

Как я могу изменить этот скрипт, поэтому при его запуске шаблон дублируется с теми же средствами защиты и тем же условием, что и я один быть в состоянии редактировать эти диапазоны?

Спасибо!

1 Ответ

1 голос
/ 25 апреля 2020

Попробуйте это -

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);  
}

Пожалуйста, не стесняйтесь исследовать больше примеров из этой документации здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...