Office js API setDataAsync无法按Document中的建议工作

时间:2017-01-31 13:46:19

标签: office-js

我正在开发一个单词add,其中有usecase在Binding中插入Rich Text Format.My Binding Type是'Text',我还将coercionType设置为'Html'仍然没有替换绑定。我的主机应用程序是在线。这是在word桌面应用程序中工作。但我希望它在word在线。 请建议。 感谢

    /*
    *addBindingToData
    *@param userSelectedText -- is a string selected in word document
    */
    function addBindingToData(userSelectedText) {
        var bindVariableIdPrefix = userSelectedText + '_Binding';
        Office.context.document.bindings.addFromSelectionAsync(Office.BindingType.Text, {
            id: bindVariableIdPrefix + '__' + count
        }, function(asyncResult) {
            if (asyncResult.status == Office.AsyncResultStatus.Failed) {
                console.log('Action failed. Error: ' + asyncResult.error.message);
            } else {
                console.log('Added new binding with type: ' + asyncResult.value.type + ' and id: ' + asyncResult.value.id);
                getVarArrayOnSelection(asyncResult.value.id,userSelectedText, bindVariableIdPrefix).then(function(bindings) {
                    createInputboxes(bindings);
                });
            }
        });
        count++;
    }
Office.context.document.bindings.getByIdAsync(obj.id,function(asyncResult) {
            if (asyncResult.status == Office.AsyncResultStatus.Failed) {
                console.log('Action failed. Error: ' + asyncResult.error.message);
            } else {
                console.log(asyncResult.value.id+'got Id');
                var BindingId = asyncResult.value;
                BindingId.setDataAsync("<b>Hello</b> World!", {coercionType: "html"}, function (asyncResult) {
                    if (asyncResult.status == "failed") {
                        console.log('Error: ' + asyncResult.error.message);
                    }
                });
            }

        });

Picture of problem
One Drive Picture

1 个答案:

答案 0 :(得分:1)

经过进一步调查后,我能够重新解决这个问题并了解根本原因。

长话短说是:当在文档中创建绑定时,实际发生的是将新的内容控件添加到文档中。根据创建绑定时用户的选择,创建一种内容控件,它可以是:

  1. BLOCK 内容控制:如果选择包含完整的段落或段落,则会创建 BLOCK 内容控件。在这种情况下,HTML插入成功(这是我正在尝试的)。

    1. INLINE 内容控制:另一方面,如果选择是部分选择(在没有完全选择的段落中),则会创建 INLINE 内容控件。在这种情况下,HTML插入失败。
  2. 好消息是,这是一个已知问题,我们正在努力在不久的将来实现这一目标。

    我将原始答案作为参考。 谢谢! =================原始答案============================

    我在Word Online中尝试使用您的代码,但我无法重现此问题。我可以在文档中看到正确打印的HTML。

    有几个问题:

    1. 您能否添加用于创建绑定的代码?
    2. 您是在OneDrive中为消费者还是OneDrive for Business尝试此操作。这对于更详细地调查非常有帮助。
    3. 谢谢! 涓。