Контекст: при обнаружении клика я пытаюсь определить, нет ли каких-либо абзацев с контентом contentControl.Следовательно, требуется повторное использование контекста.Я смог заставить работать повторное использование контекста, но не для этого конкретного бита кода.
Поэтому минимальное воспроизведение при запуске фрагмента кода дважды:
let randomObject: Word.Document = null;
await Word.run(async (context) => {
randomObject = context.document;
randomObject.track();
})
await Word.run(randomObject, async (context) => {
await test(context);
});
await Word.run(randomObject, async (context) => {
await test(context);
});
Этокод, который просто получает первый contentControl в первом абзаце.Он выполняет следующее:
- Извлечение тела
- Извлечение абзацев
- Извлечение первого элемента
- Извлечение parentContentControlOrNullObject
async function test(context: Word.RequestContext) {
try {
const body = context.document.body;
await context.sync();
const paragraphs = body.paragraphs;
paragraphs.load('items');
context.load(paragraphs);
await context.sync();
console.log('1111', paragraphs.items.length);
const para = paragraphs.items[0];
await context.sync();
console.log('2222');
const cc = para.parentContentControlOrNullObject;
await context.sync();
console.log('3333');
await context.sync();
console.log('done');
} catch (e) {
console.log('Error: test', e);
if (e instanceof OfficeExtension.Error) {
console.log('Debug info: ' + JSON.stringify(e.debugInfo));
}
}
}
Это вывод:
Очевидно, что он успешен при первом запуске, но не во втором.
Подробноошибки следующие:
{
[functions]: ,
__proto__: { },
code: "ItemNotFound",
errorLocation: "ParagraphCollection.getItem",
fullStatements: [ ],
message: "ItemNotFound",
statement: "var paragraph=paragraphs.getItem(...) /* originally getItem(...) */;",
surroundingStatements: [ ],
Symbol()_7.e7nkt729xmo: undefined,
Symbol()_k.e7nkt729xt6: undefined,
Symbol()_m.e7nkt729xt6: undefined,
Symbol(Symbol._hidden)_l.e7nkt729xt6: undefined,
Symbol(Symbol.observable)_n.e7nkt729xt6: undefined,
Symbol(util.promisify.custom)_j.e7nkt729xt6: undefined
}
@ michael-zlatkovsky Не похоже, что это связано с Использование Paragraph вне потока Word.run
const body = context.document.body;
await context.sync();
const paragraphs = body.paragraphs;
paragraphs.load('items');
context.load(paragraphs);
await context.sync();
console.log('xxxxxxxxxxx');
const t = paragraphs.items[0].getRange();
await context.sync();
console.log('yyyyyyyyyyy');
Никогда не получаетдо yyyyyyyyyyy
.