我正在尝试使用OfficeExtension。TrackedObjects类来访问跨不同上下文的范围(文档和类似的问题列在下面-尽管有点过时)。目标是让任务窗格搜索列表任务窗格中的结果,然后在单击列出的结果时选择特定的结果文本(使用javascript)。
我有:
var items = [];
function basicSearch() {
Word.run(function (context) {
const results = context.document.body.search("Online");
results.load("length, text, items");
return context.sync().then(function () {
context.trackedObjects.add(results);
for (let i = 0; i < results.items.length; i++) {
let x = results.items[i].text;
createtable("TestList", i, x, x);
items.push(results.items[i]);
}
});
return context.sync();
});
}
function createtable(id, x, y, z) {
var table = document.getElementById(id);
var row = table.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.type = "button";
cell1.onclick = function () { selectrange(x) };
cell2.type = "button";
cell2.onclick = function () { selectrange(x) };
cell3.type = "button";
cell3.onclick = function () { selectrange(x) };
cell1.innerHTML = x;
cell2.innerHTML = y;
cell3.innerHTML = z;
}
function selectrange(x) {
results.load("text");
results.items[x].select();
results.context.sync();
}
有人可以告诉我在哪里我走错了,或提供如何跟踪和调用对象(或对象的集合)使用一个完整的工作示例?
资源:
https://learn.microsoft.com/en-us/javascript/api/office/officeextension.trackedobjects?view=common-js-preview& viewFallbackFrom = office-js如何在不同的Word.run上下文中使用范围?联机外接程序:在多个上下文中使用对象跟踪对象在Word联机中抛出错误https://leanpub.com/buildingofficeaddins(使用Office.js构建Office插件有一个工作示例,但它是在typescript中,不使用trackedojects -我无法在我的插件中复制它)。
当我运行上面的代码时,它说&;ReferenceError: Can't find variable: results&;。我想让它选择特定的搜索结果显示和按下列表。如有任何帮助,不胜感激。
首先,需要将results定义为全局变量,以便将其传递给其他函数。请参考以下代码:
var results;
async function basicSearch() {
await Word.run(async (context) => {
results = context.document.body.search("Online");
results.track();
await context.sync();
});
}
async function selectrange() {
await Word.run(results, async (context) => {
results.load();
await context.sync();
results.items[0].select();
await context.sync();
});
}