Как сохранить пару значений (ключ, значение) в текстовом документе
Я разрабатываю надстройку 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);
})
})
}