gpt4 book ai didi

javascript - Word 段落对象的搜索方法不起作用

转载 作者:行者123 更新时间:2023-12-03 04:11:03 25 4
gpt4 key购买 nike

我有一个段落对象的 paragraphsArray 。我有一些段落和关键字的索引keywordRanges。我正在尝试迭代keywordRanges 并从段落对象中获取关键字的RangeObject。

但是代码在第一次迭代后失败并出现以下错误:PropertyNotLoaded:属性“items”不可用。在读取属性值之前,请在包含对象上调用 load 方法,并在关联的请求上下文上调用“context.sync()”。

引用代码:

var myObject = {
"2":{
"keywords":["the","which","eye"]
},
"4":{
"keywords":["lorem","ipsum"]
},
"9":{
"keywords":["hellow","world","foo","bar"]
}
},
paragraphsArray = [],
keywordRanges = []

Word.run((context) => {

// Create a proxy object for the document body.
var paragraphs = context.document.body.paragraphs

// Queue a commmand to get the OOXML contents of the body.
context.load(paragraphs, 'text, font, style');

// Synchronize the document state by executing the queued commands,
// and return a promise to indicate task completion.
return context.sync()
.then(() => {
// push paragraph range objects to an array
for (var i = 0; i < paragraphs.items.length; i++) {
paragraphsArray.push(paragraphs.items[i])
}

$.each(myObject, (key, value) => {
$.each(value.keywords, (idx, keyword) => {
// add the paragraph range object for the corresponding keyword to an array
var obj = {range:paragraphsArray[key], keyword:keyword}
keywordRanges.push(obj);
})
})
})
.then(()=>{
if(keywordRanges.length > 0){
$.each(keywordRanges, (idx, obj) =>{

// search keyword in the paragraph range object
// obj.range is Paragraph Range object
var searchKeywordResults = obj.range.search(obj.keyword, { matchWholeWord: true})
context.load(searchKeywordResults, 'text, font')

return context.sync().then(() => {
for (var i = 0; i < searchKeywordResults.items.length; i++) {
console.log(searchKeywordResults.items[i])
}
})
})
}
})
})

最佳答案

循环中有一个 context.sync,后面跟着一个 then(),这意味着循环的每次迭代都有一个新的 Promise 链。所有的 promise 都必须在 Word.run() 结束之前得到解决。

关于javascript - Word 段落对象的搜索方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44331961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com