1

我正在使用 word JavaScript API 开发一个 word 插件。我需要在文档的上下文中存储一些值,因此当我在同一客户端或其他客户端上再次打开文档时,想要从文档中获取该值并执行一些操作。我已经尝试使用设置对象,但设置对象是按加载项和每个文档保存的,因此值在其他客户端加载项上不可用。请指导我如何存储随文档随处可用的值。

谢谢。

4

2 回答 2

1

您想要的是自定义文档属性。

看看这里:https ://github.com/OfficeDev/office-js-docs/blob/WordJs_1.4_OpenSpec/reference/word/custompropertycollection.md

于 2017-03-06T17:31:08.643 回答
1

您还可以存储包含所有所需数据的 XML 部分,基本上是存储在文档中的 XML 文件。查看此示例,了解如何添加和检索 xml 部件。https://github.com/OfficeDev/Word-Add-in-Work-with-custom-XML-parts/blob/master/C%23/CustomXMLAppWeb/App/Home/Home.js

顺便说一句,我建议您使用文档属性,它似乎更适合您的需求。确保您使用 Word 中的最新更新!

这是一个关于如何创建文档属性的示例(第一个示例是数值,第二个示例是字符串):

function insertNumericProperty() { 
        Word.run(function (context) {
            context.document.properties.customProperties.add("Numeric Property", 1234);
            return context.sync()
                .then(function () {
                    console.log("Property added");     
                })
                .catch(function (e) { 
                    console.log(e.message);
                })
        })

    }

    function insertStringProperty() { 
        Word.run(function (context) {
            context.document.properties.customProperties.add("String Property", "Hello World!");
            return context.sync()
                .then(function () {
                    console.log("Property added");     
                })
                .catch(function (e) { 
                    console.log(e.message);
                })
        })
    }

以下是有关如何检索它们的代码:

function readCustomDocumentProperties() { 
        Word.run(function (context) {
            var properties = context.document.properties.customProperties;
            context.load(properties);
            return context.sync()
                .then(function () {
                    for (var i = 0; i < properties.items.length; i++)
                        console.log("Property Name:" + properties.items[i].key + ";Type=" + properties.items[i].type +"; Property Value=" + properties.items[i].value);
                })
                .catch(function (e) { 
                    console.log(e.message);
                })
        })
    }

于 2017-03-06T20:42:41.937 回答