Как сохранить пару значений (ключ, значение) в текстовом документе

Я разрабатываю надстройку Word, используя Word API JavaScript. Мне нужно хранить некоторые значения в контексте документа, поэтому, когда я снова открываю документ на том же клиенте или другом клиенте, хочу получить эти значения из документа и выполнить некоторые действия. Я пробовал это с объектом настроек, но объект настроек сохраняется для каждой надстройки и документа, поэтому значения недоступны для других клиентов надстройки. Пожалуйста, объясните мне, как я могу хранить значения, которые будут доступны везде вместе с документом.

Благодарю.

2 ответа

То, что вы хотите, это пользовательские свойства документа.

Посмотрите здесь: https://github.com/OfficeDev/office-js-docs/blob/WordJs_1.4_OpenSpec/reference/word/custompropertycollection.md

Вы также можете хранить 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);
                })
        })
    }

Другие вопросы по тегам