Поделиться через


Office.Dialog interface

Объект , возвращаемый при UI.displayDialogAsync вызове. Он предоставляет методы для регистрации обработчиков событий и закрытия диалогового окна.

Комментарии

Набор обязательных элементов: DialogAPI

Методы

addEventHandler(eventType, handler)

Регистрирует обработчик событий. Ниже приведены два поддерживаемых события.

  • DialogMessageReceived. Триггер — отправка сообщения из диалогового окна родительской странице.

  • DialogEventReceived. Триггер — закрытие диалогового окна или его выгрузка иным способом.

close()

Вызывается с родительской страницы, чтобы закрыть соответствующее диалоговое окно.

Этот метод является асинхронным. Он не принимает параметр обратного вызова и не возвращает объект Promise, поэтому его нельзя ожидать с await помощью ключевое слово или then функции. Дополнительные сведения см. в статье Открытие другого диалогового окна сразу после закрытия

messageChild(message, messageOptions)

Доставляет сообщение с главной страницы, например из области задач или файла функции без пользовательского интерфейса, в диалоговое окно, открытое на странице.

sendMessage(name)

ТОЛЬКО ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ. НЕ ВЫЗЫВАЙТЕ В КОДЕ.

Сведения о методе

addEventHandler(eventType, handler)

Регистрирует обработчик событий. Ниже приведены два поддерживаемых события.

  • DialogMessageReceived. Триггер — отправка сообщения из диалогового окна родительской странице.

  • DialogEventReceived. Триггер — закрытие диалогового окна или его выгрузка иным способом.

addEventHandler(eventType: Office.EventType, handler: (args: {message: string, origin: string | undefined} | {error: number}) => void): void;

Параметры

eventType
Office.EventType

Должен иметь значение DialogMessageReceived или DialogEventReceived.

handler

(args: {message: string, origin: string | undefined} | {error: number}) => void

Функция, которая принимает либо объект со свойством и , если eventType имеет значение DialogMessageReceived, либо объект со свойством error , если eventType имеет значение DialogEventReceived.originmessage Обратите внимание, что origin свойство находится undefined на клиентах, которые не поддерживают DialogOrigin 1.1.

Возвращаемое значение

void

Примеры

// The following example shows how to open a dialog with a specified size. It also shows
// how to register a function to handle the message when Office.UI.messageParent() is called
// in the dialog and how to use that handler to close the dialog. The implementation of the processMessage() function is omitted.

Office.context.ui.displayDialogAsync("https://www.contoso.com/myDialog.html", { height: 30, width: 20 },
    (asyncResult) => {
        const dialog = asyncResult.value;
        dialog.addEventHandler(Office.EventType.DialogMessageReceived, (arg) => {
            dialog.close();
            processMessage(arg);
        });
    }
);

// The following example does the same thing in TypeScript.

Office.context.ui.displayDialogAsync("https://www.contoso.com/myDialog.html", { height: 30, width: 20 },
    (asyncResult: Office.AsyncResult) => {
        const dialog: Office.Dialog = asyncResult.value;
        dialog.addEventHandler(Office.EventType.DialogMessageReceived, (arg: string) => {
            dialog.close();
            processMessage(arg);
        });
    }
);

close()

Вызывается с родительской страницы, чтобы закрыть соответствующее диалоговое окно.

Этот метод является асинхронным. Он не принимает параметр обратного вызова и не возвращает объект Promise, поэтому его нельзя ожидать с await помощью ключевое слово или then функции. Дополнительные сведения см. в статье Открытие другого диалогового окна сразу после закрытия

close(): void;

Возвращаемое значение

void

Примеры

// The following example shows how to open a dialog with a specified size. It also shows
// how to register a function to handle the message when Office.UI.messageParent() is called
// in the dialog and how to use that handler to close the dialog. The implementation of the processMessage() function is omitted.

Office.context.ui.displayDialogAsync("https://www.contoso.com/myDialog.html", { height: 30, width: 20 },
    (asyncResult) => {
        const dialog = asyncResult.value;
        dialog.addEventHandler(Office.EventType.DialogMessageReceived, (arg) => {
            dialog.close();
            processMessage(arg);
        });
    }
);

// The following example does the same thing in TypeScript.

Office.context.ui.displayDialogAsync("https://www.contoso.com/myDialog.html", { height: 30, width: 20 },
    (asyncResult: Office.AsyncResult) => {
        const dialog: Office.Dialog = asyncResult.value;
        dialog.addEventHandler(Office.EventType.DialogMessageReceived, (arg: string) => {
            dialog.close();
            processMessage(arg);
        });
    }
);

messageChild(message, messageOptions)

Доставляет сообщение с главной страницы, например из области задач или файла функции без пользовательского интерфейса, в диалоговое окно, открытое на странице.

messageChild(message: string, messageOptions?: DialogMessageOptions): void;

Параметры

message

string

Принимает сообщение с главной страницы для доставки в диалоговое окно. Все, что можно сериализовать в строку, включая JSON и XML, можно отправить.

messageOptions
Office.DialogMessageOptions

Необязательный параметр. Предоставляет параметры отправки сообщения.

Возвращаемое значение

void

Комментарии

Приложения: Excel, Outlook (минимальный набор требований: Почтовый ящик 1.9), PowerPoint, Word

Наборы обязательных элементов:

Хотя классический Outlook на Mac не поддерживает почтовый ящик 1.9, он поддерживает DialogApi 1.2.

Примеры

// The following example shows how to send information about the current active worksheet to the dialog.
await Excel.run(async (context) => {
    const worksheet = context.workbook.worksheets.getActiveWorksheet();
    worksheet.load();
    await context.sync();
    worksheetPropertiesChanged(worksheet);
});

...

function worksheetPropertiesChanged(currentWorksheet) {
    const messageToDialog = JSON.stringify(currentWorksheet);
    dialog.messageChild(messageToDialog);
}

sendMessage(name)

ТОЛЬКО ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ. НЕ ВЫЗЫВАЙТЕ В КОДЕ.

sendMessage(name: string): void;

Параметры

name

string

Возвращаемое значение

void