我已经查看了 office-js 文档,但没有找到任何通过 Word 插件使用剪贴板的正式方法。
我尝试使用较新的
navigator.clipboard.writeText
,但它会被内部 Word 浏览器(托管加载项的位置)自动拒绝,而不会提示用户(就像浏览器一样)。我没有看到任何对权限策略的相关支持,可用于与 Word 进行通信,表明加载项需要剪贴板权限。
因此,我现在正在诉诸已弃用的
document.executeCommand('copy')
,但担心这会让我的加载项被 MS App Store 拒绝。
是否有官方/认可的方式在 MS Word 插件中使用剪贴板?
OfficeJS 没有为此提供任何东西。您仍然可以使用 Document.execCommand() API,其中包括“复制”、“剪切”和“粘贴”。但它已被弃用,并且可能不再在网络浏览器中工作。
当开发团队完成规划过程时,会考虑技术社区的功能请求。使用 github 标签:
Type: product feature request
,位于 https://aka.ms/M365dev-suggestions .
Excel富客户端API似乎只有一种方法Range.copyFrom。我也找不到替代方案。也许您可以要求提供新功能。是否会出现在未来的功能列表中可能还需要一些时间。
导致控制台错误的限制:
由于应用于当前文档的权限策略,剪贴板 API 已被阻止...
仅限于通过 Web 浏览器调用 OfficeJS,但如果通过客户端桌面设备(例如 MacOS 上的 Word)调用,则
navigator.clipboard.writeText
似乎可以工作。
这太令人恼火了。请参阅相关票证(https://github.com/OfficeDev/office-js/issues/1991)我通过以下解决方法取得了一些成功。似乎可以在我当前的 chrome 版本中工作 - 118.0.5993.70(官方版本)(arm64)
export function navigator_clipboard_writeText(text: string): Promise<void> {
return new Promise(function (resolve, reject) {
try {
const textArea = document.createElement('textarea');
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
document.execCommand('copy');
textArea.remove();
resolve();
} catch (e) {
reject(e);
}
});
}