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


Надстройки Office с манифестом унифицированного приложения для Microsoft 365

В этой статье представлен манифест унифицированного приложения для Microsoft 365. Предполагается, что вы знакомы с манифестом надстроек Office.

Совет

Корпорация Майкрософт вносит ряд улучшений в платформу разработчиков Microsoft 365. Эти улучшения повышают согласованность при разработке, развертывании, установке и администрировании всех типов расширений Microsoft 365, включая надстройки Office. Эти изменения совместимы с существующими надстройками.

Одним из важных улучшений является возможность создания единой единицы распространения для всех расширений Microsoft 365 с использованием одного формата манифеста и схемы.

Мы сделали важный первый шаг к достижению этих целей, позволяя создавать надстройки Outlook с унифицированным манифестом для Microsoft 365.

Примечание.

  • В настоящее время унифицированный манифест поддерживает только надстройки Outlook и только в Office, связанных с подпиской Microsoft 365 и установленных в Windows, на мобильном устройстве или в Outlook в Интернете. Мы работаем над расширением поддержки Excel, PowerPoint и Word, а также Outlook на Mac и бессрочных версий Office.
  • Для единого манифеста требуется Office версии 2304 (сборка 16320.00000) или более поздней.

Совет

Готовы приступить к работе с унифицированным манифестом? Начните с создания надстройки Outlook с унифицированным манифестом для Microsoft 365.

Ключевые свойства унифицированного манифеста

Справочная документация по версии манифеста единого приложения main приведена в справочнике по унифицированным манифестам. (Справочник по манифесту, который включает все последние предварительные версии функций, см. в разделе Общедоступная предварительная версия для разработчиков для унифицированного манифеста.) В этой статье мы кратко рассмотрим значение базовых свойств, когда приложение Teams является (или включает) надстройку Office. Далее следуют некоторые основные документы по свойству extensions и его потомкам. Полный пример манифеста для надстройки приведен в разделе Пример унифицированного манифеста.

Базовые свойства

Каждое из базовых свойств, перечисленных в следующей таблице, содержит более подробную документацию по схеме манифеста. Базовые свойства, не включенные в эту таблицу, не имеют значения для надстроек Office.

Свойство JSON Назначение
"$schema" Определяет схему манифеста.
"manifestVersion" Версия схемы манифеста.
"id" GUID приложения или надстройки Teams.
"version" Версия приложения или надстройки Teams. Формат должен содержать n.n.nn не более пяти цифр.
"name" Общедоступные короткие и длинные имена приложения или надстройки Teams. Короткое имя отображается в верхней части области задач надстройки.
"description" Общедоступные краткие и длинные описания приложения или надстройки Teams.
"developer" Сведения о разработчике приложения или надстройки Teams.
"localizationInfo" Настраивает языковой стандарт по умолчанию и другие поддерживаемые языковые стандарты.
"validDomains" См . раздел Указание безопасных доменов.
"webApplicationInfo" Определяет веб-приложение или надстройку Teams, известное в Azure Active Directory.
"authorization" Определяет все разрешения Microsoft Graph, необходимые надстройке.

Свойство extensions

Мы прилагаем все усилия, чтобы заполнить справочную документацию по свойству extensions и его потомкам. В то же время ниже приведена базовая документация. Большинство , но не все свойства имеют эквивалентный элемент (или атрибут) в манифесте надстройки только для надстроек. В большинстве случаев описание и ограничения, применяемые к xml-элементу или атрибуту, также применяются к эквиваленту свойства JSON в унифицированном манифесте. Таблицы в разделе свойства "расширения" раздела Сравнение манифеста только надстройки с унифицированным манифестом для Microsoft 365 помогут определить XML-эквивалент свойства JSON.

Примечание.

Эта таблица содержит только некоторые репрезентативные свойства потомков "extensions". Это не исчерпывающий список всех дочерних свойств расширений. Полный список унифицированного манифеста см. в статье Унифицированный манифест для Microsoft 365. Справочник по манифесту, который включает все последние предварительные версии функций, см. в статье Общедоступная предварительная версия для разработчиков для унифицированного манифеста для Microsoft 365.

Свойство JSON Назначение
"requirements.capabilities" Определяет наборы требований , которые необходимо установить надстройке.
"requirements.scopes" Определяет приложения Office, в которых можно установить надстройку. Например, "почта" означает, что надстройку можно установить в Outlook.
"ribbons" Ленты, которые настраивает надстройка.
"ribbons.contexts" Указывает поверхности команд, которые настраивает надстройка. Например, "mailRead" или "mailCompose".
"ribbons.fixedControls" (предварительная версия для разработчиков) Настраивает и добавляет кнопку встроенной надстройки отчетов о спаме на ленту Outlook.
"ribbons.spamPreProcessingDialog" (предварительная версия для разработчика) Настраивает диалоговое окно предварительной обработки, отображаемое после того, как на ленте Outlook выбрана кнопка надстройки, сообщающей о нежелательной почте.
"ribbons.tabs" Настраивает пользовательские вкладки ленты.
"альтернативные варианты" Указывает обратную совместимость с эквивалентной надстройкой COM, XLL или обоими вариантами. Также указывает main значки, которые используются для представления надстройки в более ранних версиях Office.
"runtimes" Настраивает внедренные среды выполнения , которые использует надстройка, в том числе различные типы надстроек, которые имеют практически или не имеют пользовательского интерфейса, например пользовательские надстройки только для функций и команды функций.
"autoRunEvents" Настраивает обработчик для указанного события.

Указание безопасных доменов

В файле манифеста есть массив validDomains, который используется для того, чтобы сообщить Office, к каким доменам следует разрешить переход вашей надстройке. Как отмечалось в разделе Указание доменов, которые нужно открыть в окне надстройки, при запуске в Office в Интернете область задач можно перейти по любому URL-адресу. Однако на классических платформах, если надстройка пытается перейти по URL-адресу в домене, отличном от домена, в котором размещена начальная страница, этот URL-адрес открывается в новом окне браузера за пределами области надстройки приложения Office.

Чтобы переопределить это поведение на настольных платформах, добавьте каждый домен, который нужно открыть в окне надстройки, в список доменов, указанных в массиве validDomains. URL-адреса в доменах из списка будут открываться в области задач как в классическом Office, так и в Office в Интернете. Если он пытается перейти по URL-адресу, который отсутствует в списке, в Office на рабочем столе этот URL-адрес открывается в новом окне браузера (за пределами области задач надстройки).

Пример унифицированного манифеста

Ниже приведен пример манифеста унифицированного приложения для надстройки. Он не содержит все возможные свойства манифеста.

{
  "$schema": "https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json",
  "id": "00000000-0000-0000-0000-000000000000",
  "version": "1.0.0",
  "manifestVersion": "devPreview",
  "name": {
    "short": "Name of your app (<=30 chars)",
    "full": "Full name of app, if longer than 30 characters (<=100 chars)"
  },
  "description": {
    "short": "Short description of your app (<= 80 chars)",
    "full": "Full description of your app (<= 4000 chars)"
  },
  "icons": {
    "outline": "outline.png",
    "color": "color.png"
  },
  "accentColor": "#230201",
  "developer": {
    "name": "Contoso",
    "websiteUrl": "https://www.contoso.com",
    "privacyUrl": "https://www.contoso.com/privacy",
    "termsOfUseUrl": "https://www.contoso.com/servicesagreement"
  },
  "localizationInfo": {
    "defaultLanguageTag": "en-us",
    "additionalLanguages": [
      {
        "languageTag": "es-es",
        "file": "es-es.json"
      }
    ]
  },
  "webApplicationInfo": {
    "id": "00000000-0000-0000-0000-000000000000",
    "resource": "api://www.contoso.com/prodapp"
  },
  "authorization": {
    "permissions": {
      "resourceSpecific": [
        {
          "name": "Mailbox.ReadWrite.User",
          "type": "Delegated"
        }
      ]
    }
  },
  "extensions": [
    {
      "requirements": {
        "scopes": [ "mail" ],
        "capabilities": [
          {
            "name": "Mailbox", "minVersion": "1.1"
          }
        ]
      },
      "runtimes": [
        {
          "requirements": {
            "capabilities": [
              {
                "name": "MailBox",
                "minVersion": "1.10"
              }
            ]
          },
          "id": "eventsRuntime",
          "type": "general",
          "code": {
            "page": "https://contoso.com/events.html",
            "script": "https://contoso.com/events.js"
          },
          "lifetime": "short",
          "actions": [
            {
              "id": "onMessageSending",
              "type": "executeFunction"
            },
            {
              "id": "onNewMessageComposeCreated",
              "type": "executeFunction"
            }
          ]
        },
        {
          "requirements": {
            "capabilities": [
              {
                "name": "MailBox", "minVersion": "1.1"
              }
            ]
          },
          "id": "commandsRuntime",
          "type": "general",
          "code": {
            "page": "https://contoso.com/commands.html",
            "script": "https://contoso.com/commands.js"
          },
          "lifetime": "short",
          "actions": [
            {
              "id": "action1",
              "type": "executeFunction"
            },
            {
              "id": "action2",
              "type": "executeFunction"
            },
            {
              "id": "action3",
              "type": "executeFunction"
            }
          ]
        }
      ],
      "ribbons": [
        {
          "contexts": [
            "mailCompose"
          ],
          "tabs": [
            {
              "builtInTabId": "TabDefault",
              "groups": [
                {
                  "id": "dashboard",
                  "label": "Controls",
                  "controls": [
                    {
                      "id": "control1",
                      "type": "button",
                      "label": "Action 1",
                      "icons": [
                        {
                          "size": 16,
                          "url": "test_16.png"
                        },
                        {
                          "size": 32,
                          "url": "test_32.png"
                        },
                        {
                          "size": 80,
                          "url": "test_80.png"
                        }
                      ],
                      "supertip": {
                        "title": "Action 1 Title",
                        "description": "Action 1 Description"
                      },
                      "actionId": "action1"
                    },
                    {
                      "id": "menu1",
                      "type": "menu",
                      "label": "My Menu",
                      "icons": [
                        {
                          "size": 16,
                          "url": "test_16.png"
                        },
                        {
                          "size": 32,
                          "url": "test_32.png"
                        },
                        {
                          "size": 80,
                          "url": "test_80.png"
                        }
                      ],
                      "supertip": {
                        "title": "My Menu",
                        "description": "Menu with 2 actions"
                      },
                      "items": [
                        {
                          "id": "menuItem1",
                          "type": "menuItem",
                          "label": "Action 2",
                          "supertip": {
                            "title": "Action 2 Title",
                            "description": "Action 2 Description"
                          },
                          "actionId": "action2"
                        },
                        {
                          "id": "menuItem2",
                          "type": "menuItem",
                          "label": "Action 3",
                          "icons": [
                            {
                              "size": 16,
                              "url": "test_16.png"
                            },
                            {
                              "size": 32,
                              "url": "test_32.png"
                            },
                            {
                              "size": 80,
                              "url": "test_80.png"
                            }
                          ],
                          "supertip": {
                            "title": "Action 3 Title",
                            "description": "Action 3 Description"
                          },
                          "actionId": "action3"
                        }
                      ]
                    }
                  ]
                }
              ],
            }
          ]
        },
        {
          "contexts": [ "mailRead" ],
          "tabs": [
            {
              "builtInTabId": "TabDefault",
              "groups": [
                {
                  "id": "dashboard",
                  "label": "Controls",
                  "controls": [
                    {
                      "id": "control1",
                      "type": "button",
                      "label": "Action 1",
                      "icons": [
                        {
                          "size": 16,
                          "url": "test_16.png"
                        },
                        {
                          "size": 32,
                          "url": "test_32.png"
                        },
                        {
                          "size": 80,
                          "url": "test_80.png"
                        }
                      ],
                      "supertip": {
                        "title": "Action 1 Title",
                        "description": "Action 1 Description"
                      },
                      "actionId": "action1"
                    }
                  ]
                }
              ],
              "customMobileRibbonGroups" [
                {
                  "id": "myMobileGroup",
                  "label": "Contoso Actions",
                  "controls": [
                    {
                      "id": "msgReadFunctionButton",
                      "type": "mobileButton",
                      "label": "Action 1",
                      "icons": [
                        {
                          "size": 16,
                          "url": "test_16.png"
                        },
                        {
                          "size": 32,
                          "url": "test_32.png"
                        },
                        {
                          "size": 80,
                          "url": "test_80.png"
                        }
                      ],
                      "supertip": {
                        "title": "Action 1 Title",
                        "description": "Action 1 Description"
                      },
                      "actionId": "action1"
                    }
                  ]
                }
              ]
              "customMobileRibbonGroups": [
                {
                  "id": "mobileDashboard",
                  "label": "Controls",
                  "controls": [
                    {
                      "id": "control1",
                      "type": "mobileButton",
                      "label": "Action 1",
                      "icons": [
                        {
                          "size": 16,
                          "url": "test_16.png"
                        },
                        {
                          "size": 32,
                          "url": "test_32.png"
                        },
                        {
                          "size": 80,
                          "url": "test_80.png"
                        }
                      ],
                      "supertip": {
                        "title": "Action 1 Title",
                        "description": "Action 1 Description"
                      },
                      "actionId": "action1"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "autoRunEvents": [
        {
          "requirements": {
            "capabilities": [
              {
                "name": "MailBox", "minVersion": "1.10"
              }
            ]
          },
          "events": [
            {
              "type": "newMessageComposeCreated",
              "actionId": "onNewMessageComposeCreated"
            },
            {
              "type": "messageSending",
              "actionId": "onMessageSending",
              "options": {
                "sendMode": "promptUser"
              }
            }
          ]
        }
      ],
      "alternates": [
        {
          "requirements": {
            "scopes": [ "mail" ]
          },
          "prefer": {
            "comAddin": {
              "progId": "ContosoExtension"
            }
          },
          "hide": {
            "storeOfficeAddin": {
              "officeAddinId": "00000000-0000-0000-0000-000000000000",
              "assetId": "WA000000000"
            }
          },
          "alternateIcons": {
            "icon": {
              "size": 64,
              "url": "https://contoso.com/assets/icon64x64.jpg"
            },
            "highResolutionIcon": {
              "size": 64,
              "url": "https://contoso.com/assets/icon128x128.jpg"
            }
          }
        }
      ]
    }
  ]
}

См. также