如何从网站启动Word并向Word Add-in传参,且在加载项内获取参数?
解决Word加载项传参与获取的方案
1. 启动Word并加载任务窗格加载项(带参数)
核心思路是利用Office URI Scheme构造带参数的启动链接,从你的网站触发该链接即可启动Word并自动加载带参数的加载项。
具体实现步骤:
- 构造符合格式的URI:
格式为ms-word:ofe|u|{你的加载项任务窗格URL}?sessionId={你的会话ID}
示例:ms-word:ofe|u|https://your-domain.com/addin-taskpane.html?sessionId=abc123xyz - 在网站页面中触发该URI:
可以用HTML标签直接实现:
也可以用JavaScript动态生成并跳转:<a href="ms-word:ofe|u|https://your-domain.com/addin-taskpane.html?sessionId=abc123xyz">打开Word并加载加载项</a>function launchWordAddin() { const sessionId = "abc123xyz"; // 网站收集到的会话ID const addinUrl = `https://your-domain.com/addin-taskpane.html?sessionId=${sessionId}`; const wordUri = `ms-word:ofe|u|${encodeURIComponent(addinUrl)}`; window.location.href = wordUri; } - 前置条件:确保你的加载项已完成Word侧加载或正式部署,且任务窗格URL可正常访问。
2. 在加载项内获取参数值
Word任务窗格本质是一个网页,直接解析当前页面URL的查询参数即可拿到SessionID:
代码示例:
// 工具函数:从URL查询参数中提取指定值 function getQueryParam(paramName) { const urlParams = new URLSearchParams(window.location.search); return urlParams.get(paramName); } // 加载项初始化时获取参数 Office.onReady(() => { const sessionId = getQueryParam("sessionId"); if (sessionId) { // 用SessionID从数据库拉取对应参数 console.log("获取到的SessionID:", sessionId); // 后续业务逻辑处理 } });
额外提示:
- 若担心SessionID泄露,可对其加密后传递,加载项拿到后再解密。
- 确保加载项任务窗格使用HTTPS协议,避免浏览器安全限制。
内容的提问来源于stack exchange,提问作者Mark Jeweler
相关产品推荐
相关产品推荐

