【问题标题】:Office.js How to apply a character style to selected wordOffice.js 如何将字符样式应用于选定的单词
【发布时间】:2019-08-07 00:32:38
【问题描述】:

道歉 - Javascript 和 Office.js 的新手 但是是时候将我的 .NET 格式化功能区转换为跨平台了。有点学习曲线。

我使用我在插件教程中找到的这个功能来成功应用段落样式,但我尝试过调整它(见下文),当我了解到完全关闭插件很重要时,退出在测试更改之前返回并重新加载单词(非常繁琐),它仍然适用于整个段落的字符样式。呸

function applyemphasisstyle() {
    Word.run(function (context) {

        var pars = context.document.getSelection().paragraphs;
        pars.load();
        return context.sync().then(function () {
            for (var i = 0; i < pars.items.length; i++) {
                pars.items[i].style = "Emphasis";

            }

        return context.sync();
    })
    }) //needed for Stack overflow
    .catch(function (error) {
        console.log("Error: " + error);
        if (error instanceof OfficeExtension.Error) {
            console.log("Debug info: " + JSON.stringify(error.debugInfo));
        }
    });
}

我尝试过改变:

var pars = context.document.getSelection().paragraphs;

var pars = context.document.getSelection().getTextRanges;

我试过只删除“.paragraphs” 我尝试将“.paragraphs”更改为“.words”等
相同的结果 - 应用样式,但应用整个段落,而不是所选单词。

感谢您提供的任何帮助!

【问题讨论】:

    标签: javascript office-js


    【解决方案1】:

    此代码对我有用。由于您选择的是单个单词,因此无需循环任何内容,并且由于您正在写入样式属性,而不是读取它,因此无需加载文本对象。

    return Word.run(function(context) {
      var selectedText = context.document.getSelection();
       return context.sync()
       .then(function () {
         selectedText.style = "Emphasis";
       })
    });
    

    我建议您使用Script Lab 工具来计算脚本的逻辑。

    【讨论】:

    • 嗨 Rick,感谢您提供建议的答案,不知何故这对我不起作用 - 它仍然将字符样式应用于整个段落而不是所选单词。我假设我需要在你的代码前面加上函数调用“function applyemphasisstyle() { 并用右括号结束代码行。什么可能导致代码为你工作而不是在我的环境中工作?JavaScript 的奥秘.. .
    • PS 我会看看 Script Lab - 感谢您的提示
    • 嗨 Rick - 我刚刚又看了一遍,它确实有效。道歉。我一定是打错了什么。很抱歉花了这么长时间才回来,但围绕其他工作做这个开发。耶!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2020-09-15
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    相关资源
    最近更新 更多