我正在开发Outlook Web插件。对于功能的一部分,我们需要在会议项目中存储一些自定义属性。
似乎所有自定义属性总共有2500个字符的硬性限制,我通过反复试验发现了这一点,并且还通过挖掘插件使用的JS文件并找到此功能来发现它:
r.CustomProperties.prototype.saveAsync = function() {
for (var i = [], t = 0; t < arguments.length; ++t)
i[t] = arguments[t];
var f = 2500;
if (window.JSON.stringify(this._data$p$0).length > f)
throw Error.argument();
var n = r.CommonParameters.parse(i, !1, !0);
if (window.OSF.DDA.OutlookAppOm._instance$p.shouldRunNewCode(r.ShouldRunNewCodeForFlags.saveCustomProperties))
window.OSF.DDA.OutlookAppOm._instance$p._standardInvokeHostMethod$i$0(4, {
customProperties: this._data$p$0
}, null, n._asyncContext$p$0, n._callback$p$0);
else {
var u = new r.SaveDictionaryRequest(n._callback$p$0,n._asyncContext$p$0);
u._sendRequest$i$0(4, "SaveCustomProperties", {
customProperties: this._data$p$0
})
}
}
有人找到另一种方法可以保存超过2500个字符吗?如果我们可以将该限制提高四倍,那将是正确的。由于我们存储的数据具有敏感性质,如果可以避免,我们宁愿不引入另一个数据库(而是依靠我们已经拥有的Microsoft Exchange安全性)。
这是一个有趣的发现,但是在JS函数中设置了限制,并公开了设置/保存自定义属性的功能。我没有在documentation中提及此限制。 Microsoft应该更新文档以指出此限制。
如果需要在消息中存储更多信息,作为解决方法,可以使用EWS请求(更多信息在[Call web services from an Outlook add-in]上)或REST(更多信息在[Outlook Extended Properties REST API reference]上)。您将可以在没有此限制的情况下设置自定义/扩展属性,尤其是如果您将使用“ Binaty”类型。