Outlook AddIn GetAsync успешно, но ничего не возвращает - PullRequest
0 голосов
/ 12 июня 2019

У меня есть надстройка Outlook, разработанная с использованием API Office Javascript. Он смотрит на составляемое новое электронное письмо и делает то, что ему нужно: https://docs.microsoft.com/en-us/office/dev/add-ins/reference/objectmodel/requirement-set-1.3/office.context.mailbox.item

  • Код корректно возвращает сообщение электронной почты TO, когда вы «выбираете» письмо из предложенного списка адресов электронной почты ... показаны скриншоты @ внизу этой темы

  • Для отладки Javascript я использую C: \ Windows \ SysWOW64 \ F12 \ IEChooser.exe

  • До прошлой недели все работало нормально. Возможно ли, что обновление Windows нарушило функционал?

  • Я единственный человек, имеющий доступ к коду. Он не изменялся месяцами.
  • Когда работает отладчик, getAsync правильно возвращает значение «TO». Мне нужно было написать ответ на глобальную переменную, чтобы доказать, что значения были «неопределенными», а не в отладке.

var resultObjects;
var resultObjects2;
var strMessages = '';
var strTo = '';

var mailbox;
var mailitem;

(function () {
    "use strict";

    // The Office initialize function must be run each time a new page is loaded.
    Office.initialize = function (reason) {
        $(document).ready(function () {

            mailbox = Office.context.mailbox;
            mailitem = mailbox.item;

            mailitem.to.getAsync(function (result) {
                if (result.status === 'failed') {
                    strMessages = 'FAILED';
                } else {
                    strMessages = 'SUCCESS';
                    strTo = result.value[0];
                    resultObjects = result;
                    resultObjects2 = result.value;
                }
            });

            loadApp();
        });
    };
})();

Вот значения переменных, когда приложение загружено и отладчик не запущен

enter image description here


EDIT


Если вы «выберите» сообщение электронной почты TO, чтобы оно было выделено жирным шрифтом ... код работает правильно. Если вы оставите поле для ввода текста без выбора предлагаемого электронного письма, оно не будет работать. То же самое относится и к веб-приложению Outlook (@ https://outlook.office.com), и к приложению Outlook для настольных компьютеров.

Не работает enter image description here

Работает enter image description here

1 Ответ

1 голос
/ 13 июня 2019

API Office.context.mailbox.item.to.getAsync будет возвращать только разрешенных получателей. Если адрес электронной почты TO не разрешен (как на первом снимке экрана с заголовком «Не работает»), API не будет возвращать адрес электронной почты, пока он не будет разрешен (как на рабочем столе, так и в OWA).

Вы можете использовать событие RecipientsChanged , чтобы получить вновь разрешенных получателей после того, как вы запросили to.getAsync. Это событие сработает, когда получатель будет вновь разрешен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...