Я создаю надстройку, которая читает тела электронной почты для сокращений, а затем модифицирует тело html, чтобы при наведении курсора на найденную аббревиатуру оно давало вам определение. У меня не было проблем с логикой, и я даже нашел способ получить исходный HTML-код тела, используя Office.context.mailbox.item.body.getAsync("html", function callback(result) {..}
. Затем я проверил его в новом окне, чтобы убедиться, что оно было изменено правильно.
Мой следующий шаг - поместить html-код обратно в исходное окно, чтобы для всех электронных писем, которые я получаю, все сокращения в моей базе данных при наведении указывали на определение. Я попытался использовать метод .setAsync()
, предоставленный на этой странице здесь , чтобы вернуть HTML-код обратно, но я не могу заставить его работать или не правильно понимаю.
Вот основы моего кода
'use strict';
funciton(){
function readJSONFile(file, callback) {
//read my database of acronyms
}
function replace(body, acronyms) {
//replace acronyms in body with elements that have definitions
}
Office.onReady(function () {
// window is ready
$(document).ready(function () {
var emailBody;
Office.context.mailbox.item.body.getAsync("html", function callback(result) {
//Contains the email body
emailBody = result.value;
readJSONFile("data.json", function (acronyms) {
//Replaces acronyms in email body based on the JSON file
emailBody = replace(emailBody, JSON.parse(acronyms));
//I tried this, didn't seem to do anything
Office.context.mailbox.item.body.setAsync(emailBody, { coercionType: "html" }, function callback(result));
//I also tried this, just in case I read the syntax wrong
Office.context.mailbox.item.body.setAsync(emailBody, "html", function callback(result));
});
});
});
});
}()
Примечание: emailBody
содержит структуру html, поэтому, когда я перемещаю ее в другое окно, которое я создал для проверки функциональности кода, если оно читается как html. Я пытаюсь сделать то же самое в исходном окне тела письма.