我正在使用javascript api开发一个Word加载项。我试图在选择中显示第一段的文本。后来我想改变这一段。
但是,如果段落包含在表格中,则已显示文本失败。如果选择了表格单元格,则单元格中包含的段落似乎都不包含在context.document.getSelection()。paragraph集合中。
为什么会这样?如果选择包括大表中的表格单元,我应该如何导航到选择中的第一段?
以下是我用来调试问题的代码:
(function () {
"use strict";
// The initialize function is run each time the page is loaded.
Office.initialize = function (reason) {
$(document).ready(function () {
// Use this to check whether the API is supported in the Word client.
if (Office.context.requirements.isSetSupported('WordApi', 1.1)) {
// Do something that is only available via the new APIs
$('#button').click(doSomething);
$('#status').html('Everything is fine.');
}
else {
// Just letting you know that this code will not work with your version of Word.
$('#supportedVersion').html('This code requires WordApi 1.1 or greater.');
}
});
};
function doSomething() {
Word.run(function (context) {
// get selection
var selection = context.document.getSelection();
// load the text of all paragraphs in the selection
var paragraphs = selection.paragraphs.load('text');
// Synchronize the document state by executing the queued commands,
// and return a promise to indicate task completion.
return context.sync().then(function() {
$('#status').html(JSON.stringify(paragraphs.items));
});
})
.catch(function (error) {
$('#status').html('Error: ' + JSON.stringify(error));
console.log('Error: ' + JSON.stringify(error));
if (error instanceof OfficeExtension.Error) {
console.log('Debug info: ' + JSON.stringify(error.debugInfo));
}
});
}
})();
第一张图片中的选择会按预期返回[{"text":"Content21"}]
。
第二张图片中的选择根本不会返回任何文字:[]
。 paragraps-collection似乎是空的。这似乎对我没有任何意义。选择中有段落。
我做错了什么?
答案 0 :(得分:0)
我不熟悉Word API,但according the documentation选择包含一个范围,范围包含表格行选择案例中的段落列表。
所以你可以试试这个:
var range = context.document.getSelection();
var paragraphs = range.paragraphs;
var textFirstParagraph = paragraphs.items[0].getRange().load('text');
进一步研究文档的链接:
答案 1 :(得分:0)
我注意到,word-js中所有与表相关的对象仅在需求集1.3而不是1.1时可用。此外,它们未在文档
左侧的菜单中列出https://dev.office.com/reference/add-ins/word/paragraph
尽管如此,也可以点击例如浏览它们。关于Paragraph-object的“parentTable”属性的类型。
由于我在我的word-js版本(https://github.com/OfficeDev/office-js-docs/issues/961)的另一个关键功能中遇到了一个明显的错误,看起来需求集1.1不适合与表的交互,我认为这是一个错误。我在这里报告了它:https://github.com/OfficeDev/office-js-docs/issues/972
顺便说一下:为了增加混淆,共享api(https://dev.office.com/reference/add-ins/shared/tabledata)中还有一个“TableData”对象,它似乎被需求集1.3的表格所取代。我不知道这是做什么以及我是否应该使用它。