我有一个带有代码的MS Word加载项,用于在选择后插入文本:
Word.run(function (context) {
var selection = context.document.getSelection();
selection.insertText(text, Word.InsertLocation.after).select();
return context.sync().then(function () {
console.log('Success');
});
});
此代码已经在许多不同的机器上进行了测试而没有错误。然而,令我惊讶的是,我们的一位客户最近报告说他的文件中没有添加任何文字。
经过一些调试后,我注意到消息Success
从未打印到控制台(context.sync().then
未被调用)。为了确保Office API不是一个疯狂的问题,我直接在F12Chooser的控制台上运行了来自 office-js-docs 的示例,并且没有问题:< / p>
// Run a batch operation against the Word JavaScript API.
Word.run(function (context) {
// Create a proxy object for the document body.
var body = context.document.body;
// Queue a command to load the text property of the proxy body object.
context.load(body, 'text');
// Queue a command to insert text into the end of the Word document body.
body.insertText('This is text inserted after loading the body.text property',
Word.InsertLocation.end);
// Synchronize the document state by executing the queued commands,
// and return a promise to indicate task completion.
return context.sync().then(function () {
console.log("Body contents: " + body.text);
});
})
(文字在文件末尾插入)
同样,我的代码正在许多不同的机器和设置中工作,它似乎只是在这个人的机器上的一个问题。他正在使用:
Office Professional Plus 2016
Microsoft Word 2016 MSO (16.0.4266.1001) 64 Bits
Windows 10 Pro
Internet Explorer 11.413.15063
任何人都可以帮我吗?谢谢!
答案 0 :(得分:1)
该代码在该特定框中不起作用的原因是因为它是Office 2016 MSI SKU(构建42xx)(而不是Office365即点击运行sku)。 MSI SKU有一些与有效insertLocations相关的错误,并且大多数错误都在API的1.2版本中得到修复。坏消息是1.2+版本没有向MSI构建后向移植。
请尝试insertLocation.end(而不是InsertLocation.after),我认为你的代码应该有效(行为略有不同)
或者,如果您的客户转移到O365,问题将立即得到解决。