将单词上下文对象存储在变量中
Store word context objects in variable
探索 Word 加载项世界。
想要创建段落列表并通过单击导航到每个段落(某种 table 内容)
像那样:
我已经创建了代码(在reactjs上,但是使用哪个框架并不重要)
当我点击任何按钮时,回调被调用,控制台中没有错误,但导航不会发生。
问题:如何在 Word.run
调用之间传递一些上下文数据以实现这种行为?
import * as React from 'react'
import { useEffect, useState } from 'react'
const findAllParagraphs = async () => {
return Word.run(context => {
const contentControls = context.document.body.paragraphs.load('text')
return context
.sync()
.then(() => contentControls.items)
})
}
export const App = ({ isOfficeInitialized }) => {
const [paras, setParas] = useState<any[]>([])
useEffect(() => {
const loadParagraphs = async () => {
setParas(await findAllParagraphs())
}
if (isOfficeInitialized) {
loadParagraphs()
}
}, [isOfficeInitialized])
const navToPar = async (par: Word.Paragraph) => {
return await Word.run(async context => {
par.select()
return await context.sync()
})
}
const renderList = () => {
return paras.filter(({ text }) => !!text).map((par: Word.Paragraph, i) => {
return (
<div>
<button onClick={() => navToPar(par)} key={i}>
{par.text.substr(0, 30)}...
</button>
</div>
)
})
}
return (<div>{renderList()}</div>)
}
找到了类似问题的答案
答案是:对象不能重复使用,更多
关注
请import this snippet into Script Lab这样你就可以运行举个例子来说明如何解决这个问题。
引用的代码片段正在文档中进行搜索(它搜索文本“Word”),它将每个结果(范围)存储在一个范围数组(“rangesAr”)中,并将每个结果显示为列表框中的项目。然后您可以 select 列表中的一个范围并导航到它。我想你可以对段落做类似的事情。
探索 Word 加载项世界。 想要创建段落列表并通过单击导航到每个段落(某种 table 内容)
像那样:
我已经创建了代码(在reactjs上,但是使用哪个框架并不重要)
当我点击任何按钮时,回调被调用,控制台中没有错误,但导航不会发生。
问题:如何在 Word.run
调用之间传递一些上下文数据以实现这种行为?
import * as React from 'react'
import { useEffect, useState } from 'react'
const findAllParagraphs = async () => {
return Word.run(context => {
const contentControls = context.document.body.paragraphs.load('text')
return context
.sync()
.then(() => contentControls.items)
})
}
export const App = ({ isOfficeInitialized }) => {
const [paras, setParas] = useState<any[]>([])
useEffect(() => {
const loadParagraphs = async () => {
setParas(await findAllParagraphs())
}
if (isOfficeInitialized) {
loadParagraphs()
}
}, [isOfficeInitialized])
const navToPar = async (par: Word.Paragraph) => {
return await Word.run(async context => {
par.select()
return await context.sync()
})
}
const renderList = () => {
return paras.filter(({ text }) => !!text).map((par: Word.Paragraph, i) => {
return (
<div>
<button onClick={() => navToPar(par)} key={i}>
{par.text.substr(0, 30)}...
</button>
</div>
)
})
}
return (<div>{renderList()}</div>)
}
找到了类似问题的答案 答案是:对象不能重复使用,更多
关注请import this snippet into Script Lab这样你就可以运行举个例子来说明如何解决这个问题。
引用的代码片段正在文档中进行搜索(它搜索文本“Word”),它将每个结果(范围)存储在一个范围数组(“rangesAr”)中,并将每个结果显示为列表框中的项目。然后您可以 select 列表中的一个范围并导航到它。我想你可以对段落做类似的事情。