Word加载项调用createDocument时触发AccessDenied权限错误求助
解决Word插件createDocument方法AccessDenied错误
可能的原因及排查步骤:
1. 确认清单的要求集配置
createDocument方法需要Word API要求集1.2及以上,确保插件清单中指定了正确的要求集:
<Requirements> <Sets DefaultMinVersion="1.2"> <Set Name="WordApi" MinVersion="1.2"/> </Sets> </Requirements>
要求集版本过低会导致API调用权限受限。
2. 检查Word信任中心设置
桌面版Word侧加载未签名插件时,可能触发权限限制:
- 打开Word选项 → 信任中心 → 信任中心设置 → 受信任的加载项目录,将侧加载插件所在目录添加为受信任目录;
- 确认“禁用所有应用程序加载项(可能会影响功能)”未被勾选;
- 检查“宏设置”,避免设置为最高限制级别(如“禁用所有宏,不通知”)。
3. 验证清单权限配置的完整性
确保权限配置正确放置在VersionOverrides节点下(适配Office 2016及以上版本):
<VersionOverrides xmlns="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="VersionOverridesV1_0"> <Hosts> <Host xsi:type="Document"> <DesktopFormFactor> <Permissions>ReadWriteDocument</Permissions> <!-- 其他配置内容 --> </DesktopFormFactor> </Host> </Hosts> </VersionOverrides>
权限配置位置错误会导致实际权限不生效。
4. 调整代码逻辑
原代码中myNewDoc.properties.load()在文档未打开时调用,易引发权限冲突,调整为分步执行:
function WordLoadDocument(msg) { Word.run(context => { var myNewDoc = context.application.createDocument(); myNewDoc.open(); return context.sync() .then(() => { myNewDoc.properties.load(); return context.sync(); }) .then(() => { // 此处添加自定义属性操作 // myNewDoc.properties.customProperties.add("fileId", file.id); return context.sync(); }) }).catch(error => { if (error instanceof OfficeExtension.Error) { console.log("Error code and message: " + JSON.stringify(error.debugInfo)); } console.log(error); }); }
分步调用context.sync()可避免异步操作导致的权限异常。
5. 检查账户权限限制
若Word登录企业账户,可能存在组织级策略限制插件创建新文档的功能,可切换个人账户测试,或联系IT管理员确认Office权限策略。
内容的提问来源于stack exchange,提问作者Richard Housham
相关产品推荐
相关产品推荐

