我正在使用1.3要求集来设置/获取约会/会议的正文值:Office.context.mailbox.item.body.getAsync(...)
和Office.context.mailbox.item.body.setAsync(...)
对于除Outlook 2016 for MAC之外的所有帐户类型(Exchange内部部署和Outlook / Office365帐户),它在字面上工作得很好,它无法应用正文的html /文本值。
检查需求集(https://dev.office.com/reference/add-ins/outlook/tutorial-api-requirement-sets)MAC Outlook被列为支持所有需求集版本(1.1到1.5),因此它还应支持body属性的getAsync和setAsync方法。
知道为什么它不起作用吗?
更新:
设定值:
function applyBody() {
const $dBod = $.Deferred();
try {
Office.context.mailbox.item.body.setAsync(_appointmentInfo.body.value, { coercionType: _appointmentInfo.body.type }, function (asyncResult) {
if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
$dBod.resolve();
}
else {
$dBod.reject(translate.getTranslation('ERROR_SETTING_BODY'));
}
});
}
catch (e) {
$dBod.reject(e);
}
return $dBod.promise();
}
为了获得价值:
function getBody() {
const $dBod = $.Deferred();
getBodyType()
.done(function (bodyType) {
try {
Office.context.mailbox.item.body.getAsync(bodyType, function (asyncResult) {
if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
$dBod.resolve({ value: asyncResult.value, type: bodyType });
}
else {
$dBod.reject(translate.getTranslation('ERROR_GETTING_BODY_VALUE'));
}
});
}
catch (e) {
$dBod.reject(e);
}
})
.fail($dBod.reject);
return $dBod.promise();
}
获取体型:
function getBodyType() {
const $dBod = $.Deferred();
try {
Office.context.mailbox.item.body.getTypeAsync(function (asyncResult) {
if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
$dBod.resolve(asyncResult.value);
}
else {
$dBod.reject(translate.getTranslation('ERROR_GETTING_BODY_TYPE'));
}
});
}
catch (e) {
$dBod.reject(e);
}
return $dBod.promise();
}
UPDATE2:
方法我用于连接初始体值与我的html:
const filterNullsAndUndefined = function (array, char) {
return array.filter(function (val) { return val; }).join(char);
};
我称之为filterNullsAndUndefined([intialBodyValue, myHtml],'');
在我的情况下,initialBodyValue是我在将myHtml附加到它之前使用body.getAsync(...)
得到的值(为了保留用户在myHtml模板被追加之前插入的任何文本)。如果我直接在body上设置myHtml(覆盖)就行了。
更新3:
当我们追加“圣诞节”这个词时,我们得到的结果如下:
我们能够重现这个问题。在
在Outlook 2016桌面上工作后添加<b>
Text</b>
,但在Mac上不能。我们很快就会解决这个问题。</html>