我无法获得标题的OOXML。根据{{3}} getHeader
“方法将返回Body
类型。documentation有一个获取OOXML的方法。但看起来它没有返回OOXML。也许我我错过了什么?
这是我的代码:
Word.run(function (context) {
// Create a proxy sectionsCollection object.
var mySections = context.document.sections;
// Queue a commmand to load the sections.
context.load(mySections, 'body/style');
// Synchronize the document state by executing the queued commands,
// and return a promise to indicate task completion.
return context.sync().then(function () {
// header
var headerBody = mySections.items[0].getHeader("primary");
// header OOXML
//// NOT GETTING OOXML HERE
var headerOOXML = headerBody.getOoxml();
// Synchronize the document state by executing the queued commands,
// and return a promise to indicate task completion.
return context.sync().then(function () {
// modify header
var headerOOXMLValue = ModifyHeaderMethod(headerOOXML.value);
headerBody.clear();
headerBody.insertOoxml(headerOOXMLValue, 'Start');
// Synchronize the document state by executing the queued commands,
// and return a promise to indicate task completion.
return context.sync().then(function () {
callBackFunc({
isError: false
});
});
});
});
})
答案 0 :(得分:2)
Office.js的“艺术”是为了尽量减少你所做的“同步”。我知道这是一种不必要的负担,但事实就是如此。
考虑到这一点,在这种情况下,您只需要一个同步。 此代码有效(假设您在doc中只有一个部分)。 顺便说一下,您可以在脚本实验室中使用此yaml进行尝试。
如果这不起作用,请说明这是Word for Windows(和什么版本)或在线,或Mac ...谢谢!
async function run() {
await Word.run(async (context) => {
let myOOXML = context.document.sections.getFirst()
.getHeader("primary").getOoxml();
await context.sync();
console.log(myOOXML.value);
});
}
答案 1 :(得分:0)
这里有很多额外的代码,但问题的关键是headerOOXML
不会填充sync()
:
Word.run(function (context) {
var header = context.document.sections // Grabv
.getFirst() // Get the first section
.getHeader("primary"); // Get the header
var ooxml = header.getOoxml();
return context.sync().then(function () {
console.log(ooxml.value);
});
});