J'essaie d'insérer une nouvelle ligne dans une table dans Word et de modifier le contenu des cellules de la nouvelle ligne. Le problème que je rencontre est qu'après l'insertion de la ligne, le Word api n'est pas capable de trouver des cellules dans la nouvelle ligne. Ci-dessous j'ai ajouté une version très simplifiée de mon code.Table.getCell() ne fonctionne pas sur la cellule dans la ligne nouvellement insérée
await Word.run(async(context) => {
let table = context.document.body.tables.getFirstOrNullObject();
context.load(table, {
expand: "rows/items/cells/items/body"
})
await context.sync();
let row = table.rows.items[table.rowCount - 1];
row.insertRows("After", 1);
await context.sync();
let cell = table.getCell(2, 0); //throws "ItemNotFound" exception
cell.body.insertText("test", "Replace");
await context.sync();
});
Existe-t-il un moyen de faire fonctionner cela ou est-ce un bug?
(s'il vous plaît ne suggèrent pas l'aide du paramètre valeurs sur la ligne d'insertion comme mon code actuel est beaucoup plus compliqué)
J'ai déjà essayé cela et n'a pas résolu la question. Des informations supplémentaires sont que j'ai initialement une table de 2 lignes et que vous voulez modifier une cellule dans la dernière (nouvelle) ligne – Nick
Odd. J'ai été capable de répliquer votre bug dans ScriptLab. Ajouter 'context.load (table, {expand:" lignes/items/cells/items/body "});' avant d'appeler 'sync()' l'a résolu. Avez-vous eu la même erreur après avoir ajouté cette ligne? –
Oui, mais lorsque j'ai plus de 2 lignes dans ma table initiale dans mon document, cela fonctionne bien. J'ai fait quelques tests supplémentaires et votre deuxième suggestion fonctionne pour moi (en chargeant la ligne nouvellement ajoutée). Le chargement de la table entière et l'obtention d'une cellule de la ligne nouvellement ajoutée à partir du niveau de la table ne fonctionne pas. – Nick