我有一个与Excel的工作表保护相关的问题......
上下文是我需要为不同的用户组提供不同的工作表进行编辑,但所有组必须至少查看所有工作表,例如usergroup1可以编辑第二张和第三张以及第一张的部分,usergroup2只能编辑第一张。
我能够相应地设置FormatProtection(worksheet.protection.protect();
)和WorksheetProtection(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);
});
}
)以启用此功能但我似乎无法通过API对工作表设置密码保护?这意味着,例如,任一组都可以简单地单击审阅功能区中的“取消保护工作表”选项,并编辑我不希望它们的工作表。
我尝试过以下文档,但遗憾的是无济于事。
作为一个例子,这是一个我想完成的功能:
{{1}}
目前,我正在使用Excel 2016(桌面版)。这是可能实现还是我错过了一些可以实现相同结果的功能?
感谢您的帮助。
答案 0 :(得分:2)
我们的API中没有密码保护功能。您可以保护工作表以避免随意编辑,但您无法进行密码保护。原因是所有端点都没有密码保护(IIRC,Excel Online存在问题)。
如果您想在UserVoice上提交建议错误,可以看看我们是否考虑将密码保护作为仅限桌面的API。到目前为止,我们已经避免在Excel中执行这些操作,但我确实知道Word已经完成了一些“WordApiDesktop”API。因此,根据它阻止您(以及其他人)的情况,这可能是一种选择。在这种情况下,您可以在桌面上进行密码保护和取消保护,但无法在线执行这些操作。
答案 1 :(得分:2)