【问题标题】:Inserting text following selection in Office-JS在 Office-JS 中选择后插入文本
【发布时间】:2017-11-03 03:43:20
【问题描述】:

我正在尝试使用共享 JS API 在 Word 2013 中的一段选定文本之后立即附加一个超链接。

在没有选择的情况下插入当前光标时,使用 OOXML 插入超链接可以正常工作。我的问题是“找到”所选文本的结尾以附加 OOXML。

仅使用 setSelectedDataAsync 会覆盖现有文本。我尝试将所选文本读取为 OOXML 并将超链接 XML 连接到它,但没有成功。

我没有尝试读取当前选择然后修改该 OOXML,但我希望避免。

在 Word JS API 中,在选择项上提供了之前和之后,因此操作起来很简单。是否可以在共享 API 中执行此操作?谢谢。

【问题讨论】:

  • 您是否尝试过使用getSelectedDataAsync 作为HTML,附加您的链接,然后使用setSelectedDataAsync 作为HTML 将字符串推回?这比 OOXML 简单得多。
  • 谢谢!。这是要走的路,使用下面 Kim 的答案,我可以添加一些简单的格式。

标签: ms-word office-js


【解决方案1】:

以下代码示例说明了 Marc 在上面的评论中描述的方法(有一个例外:它将选定的数据作为 Text,而不是作为 HTML)。

这个 sn-p 使用getSelectedDataAsync 获取所选数据(作为文本),然后将超链接附加到该数据并使用setSelectedDataAsync 将该字符串推回文档中(作为HTML)。

Office.context.document.getSelectedDataAsync(Office.CoercionType.Text,
{ valueFormat: "unformatted" },
function (asyncResult) {
    var error = asyncResult.error;
    if (asyncResult.status === Office.AsyncResultStatus.Failed) {
        console.log(error.name + ": " + error.message);
    }
    else {
        // Get selected data.
        var dataValue = asyncResult.value;
        console.log("Selected data is: " + dataValue);

        // Create newText by appending hyperlink to dataValue.
        var myHyperlink = "<a href='https://www.bing.com'>https://www.bing.com</a>";
        var newText = dataValue + " " + myHyperlink;
        console.log("New text is: " + newText);

        // Replace selected text with newText value.
        Office.context.document.setSelectedDataAsync(newText, { coercionType: "html" }, 
            function (asyncResult) {
                var error = asyncResult.error;
                if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                    console.log(error.name + ": " + error.message);
                }
            });
    }
});

注意: 将所选数据作为 Text 的一个副作用是,就像这个 sn-p 所做的那样,当您编写将该字符串(附加了超链接)返回到文档,您将丢失先前存在于所选文本中的任何格式(例如:字体颜色、样式等)。如果保留原始选定文本的格式很重要,则需要将选定数据作为 HTML 获取,然后将超链接附加到包含原始选定文本的 HTML 部分,之前将该 HTML 写回文档。

您可以使用 Script Lab (https://aka.ms/getscriptlab) 在 Word 中自己快速轻松地尝试此代码 sn-p。只需安装 Script Lab 插件(免费),然后在导航菜单中选择“导入”,并使用以下 GIST URL:https://gist.github.com/kbrandl/8e235fb0ccc190bf42ed9ce1874f5559

【讨论】:

  • 谢谢!这要简单得多,并且允许我应用一些简单的格式,例如上标。
猜你喜欢
  • 2013-07-04
  • 1970-01-01
  • 2017-01-16
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
相关资源
最近更新 更多