У меня вопрос, касающийся защиты рабочего листа Excel ...
Контекст заключается в том, что мне нужно иметь разные рабочие листы, доступные для редактирования разным группам пользователей, но все группы должны, по крайней мере, видеть все листы, например. usergroup1 может редактировать листы два и три и части первого листа, usergroup2 может редактировать только лист один.
Я могу установить FormatProtection (range.format.protection.locked = false;
) соответственно и WorksheetProtection (worksheet.protection.protect();
), чтобы включить это, но, похоже, у меня нет возможности установить пароль через API для защиты рабочего листа? Это означает, например, что любая группа может просто щелкнуть параметр «Снять защиту с листа» на ленте обзора и редактировать листы, которые мне не нужны.
Я пробовал просмотреть приведенную ниже документацию, но, к сожалению, безрезультатно.
- http://dev.office.com/reference/add-ins/excel/worksheetprotection
- https://github.com/OfficeDev/office-js-docs/blob/master/reference/excel/worksheetprotection.md
В качестве примера приведу функцию, которую я хотел бы выполнить:
function CopyWorksheet() {
var newAddress;
Excel.run(function (ctx) {
var worksheet = ctx.workbook.worksheets.getActiveWorksheet();
var range = worksheet.getUsedRange();
range.load();
// insert new worksheet
var newWorksheetName = "Copied_Sheet";
var newWorksheet = ctx.workbook.worksheets.add(newWorksheetName);
return ctx.sync().then(function () {
// copy the old values to the new worksheet
newAddress = range.address.substring(range.address.indexOf("!") + 1);
newWorksheet.getRange(newAddress).values = range.values;
newWorksheet.getRange(newAddress).formulas = range.formulas;
newWorksheet.getRange(newAddress).text = range.text;
// protect both worksheets
worksheet.protection.protect();
newWorksheet.protection.protect();
// requirement here to set a password so that no one can
// edit the worksheets by selecting 'Unprotect Sheet' in excel
// ...
})
.then(ctx.sync)})
.catch(function(error) {
console.log("Error: " + error);
});
}
В настоящее время я использую Excel 2016 (настольная версия). Возможно ли это реализовать, или я упустил некоторые существующие функции, которые могут достичь того же результата?
Спасибо за вашу помощь.