Создание листа скриптов Google (проблема защиты)
Хорошо, стекопоток.
Я прыгну прямо в мой вопрос. У меня есть основная рабочая тетрадь с большим количеством информации, предоставляющей (через запрос /importrange) правильную информацию нескольким отдельным рабочим тетрадям. Я обновляю основную рабочую книгу каждую неделю и каждую неделю создаю новые таблицы для отдельных рабочих книг со следующим кодом:
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var pasteSheet = [ {name: "Paste Sheet", functionName: "copySheet"}];
ss.addMenu("Copy to Spreadsheets", pasteSheet);
}
function copySheet() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheets()[0];
var sheet2 = source.getSheets()[1];
var sourceFile = DriveApp.getFileById(source.getId());
var sourceFolder = sourceFile.getParents().next();
var folderFiles = sourceFolder.getFiles();
var thisFile;
while (folderFiles.hasNext()) {
thisFile = folderFiles.next();
if (thisFile.getName() !== sourceFile.getName()){
var currentSS = SpreadsheetApp.openById(thisFile.getId());
sheet.copyTo(currentSS);
sheet2.copyTo(currentSS);
currentSS.getSheets()[currentSS.getSheets().length-2].setName('W6');
currentSS.getSheets()[currentSS.getSheets().length-1].setName('W6 ISSUES');
}
};
}
Этот код прекрасно работает при создании двух новых листов в каждой отдельной книге.
Моя проблема: я работал над разными способами, чтобы попытаться включить защиту при запуске этого скрипта. Что мне нужно, так это защитить отдельные листы (проблемы W6 и W6). Первый из W6 должен быть полностью защищен, за исключением диапазона A3:A20, где мне нужно, чтобы владельцы соответствующих отдельных листов могли быть отредактированы. "Проблемы W6" должны быть полностью защищены.
Как мне поступить, чтобы это произошло? Любая помощь будет оценена.
1 ответ
Информацию о защите можно найти здесь: https://developers.google.com/apps-script/reference/spreadsheet/protection
Вот пример для защиты "W6 Issues"
var W6issues = currentSS.getSheets()[currentSS.getSheets().length-1].setName('W6 ISSUES');
var protection = W6issues.protect().setDescription('Sample protected sheet');
Сделайте то же самое для "W6", а затем используйте.remove() для диапазона, который вы не хотите защищать, https://developers.google.com/apps-script/reference/spreadsheet/protection