Ms word Office JavaScript API:在Word中为Mac选择范围
我正在使用MicrosoftOfficeJavaScriptAPI进行一个附带项目。我有一些功能可以选择一个范围,以便滚动到文档中的特定位置。这在Office for web中正常工作,但在Office for Mac中,调用Ms word Office JavaScript API:在Word中为Mac选择范围,ms-word,office365,ms-office,office-js,office365-apps,Ms Word,Office365,Ms Office,Office Js,Office365 Apps,我正在使用MicrosoftOfficeJavaScriptAPI进行一个附带项目。我有一些功能可以选择一个范围,以便滚动到文档中的特定位置。这在Office for web中正常工作,但在Office for Mac中,调用context.sync().then()时,我遇到以下错误: 未处理的承诺拒绝:RichApi。错误:ItemNotFound 我找不到关于这个特定错误的任何文档,我也不确定如何排除我可能做错的地方。我错过了什么?正如我所说,这在web界面中起作用 下面是演示问题的最少代
context.sync().then()时,我遇到以下错误:
未处理的承诺拒绝:RichApi。错误:ItemNotFound
我找不到关于这个特定错误的任何文档,我也不确定如何排除我可能做错的地方。我错过了什么?正如我所说,这在web界面中起作用
下面是演示问题的最少代码示例:
function UI(context) {
this.context = context;
}
UI.prototype.initialize = function() {
var paragraphs = this.context.document.body.paragraphs;
this.context.load(paragraphs);
document.querySelector('button').addEventListener('click', () => {
this.context.sync().then(() => {
this.goToRange(paragraphs.items[0]);
});
});
};
UI.prototype.goToRange = function(range) {
range.select();
this.context.sync();
};
document.addEventListener('DOMContentLoaded', () => {
Office.onReady(() => {
Word.run(context => {
return context.sync().then(() => {
new UI(context).initialize();
});
});
});
});
我能想到的唯一一件事是,在某种意义上,对段落客户机对象的引用可能会变得“过时”,可能是因为Mac应用程序中的某些资源限制低于在线界面中的资源限制?(这对我来说是违反直觉的,但这是我唯一想到的。)我想我找到了问题所在。在整理问题中的最小代码示例时,我偶然发现了一个提示;我一开始删除了太多的代码,遇到了以下错误:
未处理的承诺拒绝:RichApi。错误:批处理函数已传递
对“.run”方法没有返回承诺。函数必须返回
承诺,以便可以释放任何自动跟踪的对象
批处理操作完成时
我认为问题在于,至少在Word for Mac中,您不能在异步事件侦听器中使用由Word.run
提供的context
对象。我猜这是因为,如上错误所述,在解析返回的承诺后,某些状态已被释放。我可以通过在事件侦听器中添加对Word.run
(并使用提供的新鲜上下文
)的专用调用来使代码正常工作
它在浏览器中运行得很好,这仍然有点奇怪。据推测,在基于浏览器的版本中,同样的状态不会像以前那样积极地发布。我想我已经解决了这个问题。在整理问题中的最小代码示例时,我偶然发现了一个提示;我一开始删除了太多的代码,遇到了以下错误:
未处理的承诺拒绝:RichApi。错误:批处理函数已传递
对“.run”方法没有返回承诺。函数必须返回
承诺,以便可以释放任何自动跟踪的对象
批处理操作完成时
我认为问题在于,至少在Word for Mac中,您不能在异步事件侦听器中使用由Word.run
提供的context
对象。我猜这是因为,如上错误所述,在解析返回的承诺后,某些状态已被释放。我可以通过在事件侦听器中添加对Word.run
(并使用提供的新鲜上下文
)的专用调用来使代码正常工作
它在浏览器中运行得很好,这仍然有点奇怪。据推测,在基于浏览器的版本中,同样的状态不会像在浏览器版本中那样被积极地发布。当一个平台(而不是另一个平台)上发生与承诺相关的错误时,人们怀疑代码没有正确地处理异步性,但在“良好”平台上,计时的结果是,幸运的是,所有事情都以所需的顺序完成。我找不到将代码段放入Word的方法。请运行不会创建与承诺处理相关的语法错误的回调。请在中创建一个简单的问题复制,并发布代码。@RickKirkham感谢您的回复!我已经用完整的工作代码示例更新了这个问题。也就是说,在写这个示例时,我想我发现了这个问题。我将发布一个答案。同样的问题当一个平台上发生承诺相关的错误,而不是另一个平台上发生时,怀疑代码没有正确处理异步性,但在“好”平台上,计时工作正常,幸运的是,所有事情都按所需顺序完成。我找不到将代码段放入Word的方法。请运行不会创建与承诺处理相关的语法错误的回调。请在中创建一个简单的问题复制,并发布代码。@RickKirkham感谢您的回复!我已经用完整的工作代码示例更新了这个问题。也就是说,在写这个示例时,我想我发现了这个问题。我会在这里发布答案。同样的问题