我正在为Word开发Office加载项,所以我正在使用OfficeJ。
我有这段代码,如果Word文档处于只读模式,它应该执行一些工作。
Word.run(function (context) {
var prop = context.document.properties;
prop.load("*");
return context.sync().then(function () {
if (prop.security && prop.security !== 0) {
// do some stuff
}
});
});
我不了解prop.security
的含义。我试图将Word文档模式更改为只读,但是即使重新加载加载项后prop.security
的值也不会立即更改。有时prop.security
的值为0
,其他时候的值为8
。
official documentation仅说:Gets the security of the document
,但没有解释这些值的含义。
有人可以帮我解释一下Word.DocumentProperties.security的工作原理吗?
答案 0 :(得分:2)
更新3 :
Microsoft的开发人员已找到正式文档。它是Open Office XML标准的一部分,特别是DocSecurity元素:ISO/IEC 29500-1:2016(下载zip文件,并在PDF中搜索“ DocSecurity”。)有关Microsoft如何在此处实现它的更多信息: 2.1.1713 Part 1 Section 22.2.2.7, DocSecurity 。本文档确认下面的UPDATE 2中的列表正确。 (因此,忽略“(可能)”。)此外,它表明列出的16个值是唯一可能的值。
更新2 :
根据下面的OP注释,这是更新的值列表。我无法验证标记为“(可能)”的标记,但是基于该模式,我非常确信它们是正确的。这不一定是完整的。值可能高于15。
0 = File on disk is read/write
1 = Protect Document: File is encrypted and requires a password to open
2 = Protect Document: Always Open as Read-Only
3 = Protect Document: Both #1 above and #2
4 = File on disk is read only
5 = Both #1 above and #4 above
6 = Both #2 and #4
7 = (Probably) All of #1, #2, and #4
8 = Protect Document: Restrict Edit to read-only
9 = Both #1 and #8
10 = Both #2 and #8
11 = All of #1, #2, and #8
12 = (Probably) Both #4 and #8
13 = (Probably) All of #1, #4, and #8
14 = (Probably) All of #2, #4, and #8
15 = (Probably) All of #1, #2, #4, and #8
更新: 它不是2的幂,并且某些值与“文件”菜单中的保护文档选项相关。这是我已经发现的值:
0 = File on disk is read/write
1 = Protect Document: File is encrypted and requires a password to open
3 = Protect Document: Both #1 above and #6 below
4 = File on disk is read only
5 = Both #1 above and #4 above
6 = Protect Document: Always Open as Read-Only
8 = ?
请注意,某些保护文档选项会禁用脚本实验室,因此我无法测试它们是否具有wdPropertySecurity
值。我认为,但尚未测试,它们会阻止任何加载项,因此,如果存在,则加载项永远不会返回这些值。
原始答案:
我从Word团队的开发人员那里得到了一些信息。 BuiltInDocumentProperties(wdPropertySecurity)
值引用文档作为磁盘上的文件的属性。当您将视图模式设置为只读时,您不会更改对磁盘上文件的访问,因此wdPropertySecurity值不应更改。如果它是0
,则应保持0
。开发人员发现了0
和4
的含义。既然您已经看过8
,那么看起来它们是2的幂,因此也可能还有2
。这是开发人员报告的内容:
0 = read/write
2 = ?
4 = read only
8 = ?
如果我发现更多内容,我将添加。同时,您能否提供导致获得8
的确切步骤?