Я сейчас работаю над надстройкой Office 365 и просто пытаюсь использовать функцию office js для календарей делегатов.некоторые функции работают нормально, но когда я пытаюсь использовать метод makeEwsRequestAsync, он терпит неудачу и дает ErrorAcessDenied как код ошибки и сообщение, которое я получаю как Расширение Office не имеет прав доступа к любым другим почтовым ящикам.почтовый ящик, предоставленный в контексте пользователя
Я также пробовал бета-версию Office JS, но не повезло.
Вот как я использую функцию
var callGetItem = function(id) {
mailbox.makeEwsRequestAsync(getItemRequest(id), function(asyncResult) {
var parser = new X2JS();
var json = parser.xml_str2json(asyncResult.value);
getItemJson = json.Envelope.Body.GetItemResponse.ResponseMessages;
logMessage("getItem request - call number " + asyncCount);
//
if (getItemJson.GetItemResponseMessage._ResponseClass !== "Error") {
logMessage("getItem request success");
changeKey = getItemJson.GetItemResponseMessage.Items.CalendarItem.ItemId._ChangeKey;
logMessage("getItem request ChangeKey: " + changeKey, true);
checkRecurrencePattern(getItemJson.GetItemResponseMessage.Items.CalendarItem);
if (customPropsString === void(0) || customPropsString == "")
{
if (getItemJson.GetItemResponseMessage.Items.CalendarItem.ExtendedProperty)
{
logMessage("Custom properties value: " + getItemJson.GetItemResponseMessage.Items.CalendarItem.ExtendedProperty.Value.toString());
saveCustomPropertyJavaScript(getItemJson.GetItemResponseMessage.Items.CalendarItem.ExtendedProperty.Value.toString());
}
}
} else {
logMessage("getItem request error");
asyncCount++;
setTimeout(function() {
callGetItem(id);
}, 5000);
}
});
};
var getItemRequest = function(id) {
var request =
'<?xml version="1.0" encoding="utf-8"?>' +
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
' xmlns:xsd="http://www.w3.org/2001/XMLSchema"' +
' xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
' xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">' +
' <soap:Header>' +
' <RequestServerVersion Version="Exchange2016" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" soap:mustUnderstand="0" />' +
' </soap:Header>' +
' <soap:Body>' +
' <GetItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">' +
' <ItemShape>' +
' <t:BaseShape>IdOnly</t:BaseShape>' +
' <t:AdditionalProperties>' +
' <t:FieldURI FieldURI="item:Subject"/>' +
' <t:FieldURI FieldURI="item:Body"/>' +
' <t:FieldURI FieldURI="calendar:Organizer"/>' +
' <t:FieldURI FieldURI="calendar:Resources"/>' +
' <t:FieldURI FieldURI="calendar:IsRecurring"/>' +
' <t:FieldURI FieldURI="calendar:Recurrence"/>' +
' <t:FieldURI FieldURI="calendar:FirstOccurrence"/>' +
' <t:FieldURI FieldURI="calendar:LastOccurrence"/>' +
' <t:ExtendedFieldURI DistinguishedPropertySetId="PublicStrings" PropertyName="DDL Reference" PropertyType="String" />' +
' </t:AdditionalProperties>' +
' </ItemShape>' +
' <ItemIds><t:ItemId Id="' + id + '"/></ItemIds>' +
' </GetItem>' +
' </soap:Body>' +
'</soap:Envelope>';
return request;
};
Я использую инсайдерскую версию outlook со сборкой 16.0.12112.20000 32-битная версия.
Кто-нибудь знает об этой проблеме или любом обходном пути, или сообщите мне, если я что-то упустил.