Excel Office加载项API工作表保护密码

时间:2016-08-09 09:39:51

标签: excel ms-office office-addins excel-addins office-js

我有一个与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(桌面版)。这是可能实现还是我错过了一些可以实现相同结果的功能?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我们的API中没有密码保护功能。您可以保护工作表以避免随意编辑,但您无法进行密码保护。原因是所有端点都没有密码保护(IIRC,Excel Online存在问题)。

如果您想在UserVoice上提交建议错误,可以看看我们是否考虑将密码保护作为仅限桌面的API。到目前为止,我们已经避免在Excel中执行这些操作,但我确实知道Word已经完成了一些“WordApiDesktop”API。因此,根据它阻止您(以及其他人)的情况,这可能是一种选择。在这种情况下,您可以在桌面上进行密码保护和取消保护,但无法在线执行这些操作。

答案 1 :(得分:2)