Office-Add-Ins mit dem einheitlichen App-Manifest für Microsoft 365 (Vorschau)

In diesem Artikel wird das einheitliche App-Manifest für Microsoft 365 in der Vorschau vorgestellt. Es wird davon ausgegangen, dass Sie mit dem Office-Add-Ins-Manifest vertraut sind.

Tipp

Microsoft nimmt eine Reihe von Verbesserungen an der Microsoft 365 Entwicklerplattform vor. Diese Verbesserungen bieten mehr Konsistenz bei der Entwicklung, Bereitstellung, Installation und Verwaltung aller Arten von Erweiterungen von Microsoft 365, einschließlich Office-Add-Ins. Diese Änderungen sind mit vorhandenen Add-Ins kompatibel.

Eine wichtige Verbesserung, an der wir arbeiten, ist die Möglichkeit, eine einzelne Verteilungseinheit für alle Microsoft 365-Erweiterungen (Teams-Apps) zu erstellen, indem sie dasselbe Manifestformat und Schema verwenden, basierend auf dem JSON-formatierten einheitlichen App-Manifest für Microsoft 365.

Hinweis

Jede Erweiterung eines Teils der Microsoft 365-Plattform wird jetzt als "Teams-App" bezeichnet, auch wenn sie die Teams-Anwendung selbst nicht erweitert.

Wir haben einen wichtigen ersten Schritt in Richtung dieser Ziele gemacht, indem wir Ihnen das Erstellen von Outlook-Add-Ins ermöglicht haben, die nur unter Windows ausgeführt werden, mit einem einheitlichen Manifest für Microsoft 365.

Hinweis

  • Das einheitliche Manifest ist für die Vorschau verfügbar und kann basierend auf Feedback geändert werden. Wir empfehlen erfahrenen Add-In-Entwicklern, damit zu experimentieren. Das einheitliche Manifest sollte nicht in Produktions-Add-Ins verwendet werden.
  • Die Vorschauversion des einheitlichen Manifests unterstützt nur Outlook-Add-Ins und nur in Office, die aus einem Microsoft 365-Abonnement heruntergeladen und unter Windows installiert ist. Wir arbeiten daran, die Unterstützung für Excel, PowerPoint und Word sowie andere Plattformen zu erweitern.
  • Das einheitliche Manifest erfordert Office Version 2304 (Build 16320.00000) oder höher. Ihr Microsoft 365-Abonnementkanal muss "Beta" sein.

Tipp

Sind Sie bereit für die ersten Schritte mit dem einheitlichen Vorschaumanifest? Beginnen Sie mit Erstellen eines Outlook-Add-Ins mit dem einheitlichen Manifest für Microsoft 365 (Vorschau).

Wichtige Eigenschaften des einheitlichen Manifests

Die Standard Referenzdokumentation für die Vorschauversion des einheitlichen App-Manifests finden Sie unter App-Manifestschema für öffentliche Entwicklervorschau für Teams. Dieser Artikel enthält Informationen zu den kritischen Basismanifesteigenschaften, darf jedoch keine Dokumentation der Eigenschaft "extensions" enthalten, die die Eigenschaft ist, in der Office-Add-Ins im einheitlichen Manifest konfiguriert werden. Daher geben wir in diesem Artikel eine kurze Beschreibung der Bedeutung von Basiseigenschaften, wenn die Teams-App ein Office-Add-In ist (oder enthält). Es folgt eine grundlegende Dokumentation für die Eigenschaft "extensions" und deren untergeordnete Eigenschaften. Ein vollständiges Beispielmanifest für ein Add-In finden Sie unter Einheitliches Manifest der Beispielvorschau.

Basiseigenschaften

Jede der in der folgenden Tabelle aufgeführten Basiseigenschaften enthält eine ausführlichere Dokumentation unter Öffentliches Entwicklervorschau-App-Manifestschema für Teams. Basiseigenschaften, die nicht in dieser Tabelle enthalten sind, haben für Office-Add-Ins keine Bedeutung.

JSON-Eigenschaft Zweck
"$schema" Identifiziert das Manifestschema.
"manifestVersion" Version des Manifestschemas.
"id" GUID der Teams-App/-Add-Ins.
"version" Version der Teams-App/-Add-Ins.
"name" Öffentliche kurze und lange Namen der Teams-App/-Add-Ins. Der Kurzname wird oben im Aufgabenbereich eines Add-Ins angezeigt.
"description" Öffentliche kurze und lange Beschreibungen der Teams-App/-Add-Ins.
„developer“ Informationen zum Entwickler der Teams-App/-Add-Ins.
"localizationInfo" Konfiguriert das Standardgebietsschema und andere unterstützte Gebietsschemas.
"validDomains" Weitere Informationen finden Sie unter Angeben sicherer Domänen.
"webApplicationInfo" Identifiziert die Web-App der Teams-App bzw. des Add-Ins, wie sie in Azure Active Directory bekannt ist.
"authorization" Identifiziert alle Microsoft Graph Berechtigungen, die das Add-In benötigt.

Eigenschaft "extensions"

Wir arbeiten hart daran, die Referenzdokumentation für die Eigenschaft "extensions" und ihre nachfolgereigenen Eigenschaften zu vervollständigen. In der Zwischenzeit finden Sie im Folgenden einige grundlegende Dokumentationen. Die meisten, aber nicht alle Eigenschaften verfügen über ein entsprechendes Element (oder Attribut) im XML-Manifest für Add-Ins. In den meisten Fällen gelten die Beschreibung und Einschränkungen, die für das XML-Element oder -Attribut gelten, auch für dessen JSON-Eigenschaftsäquivalent im einheitlichen Manifest. Die Tabellen im Abschnitt "extensions"-Eigenschaft des Vergleichs des XML-Manifests mit dem einheitlichen Manifest für Microsoft 365 können Ihnen helfen, das XML-Äquivalent einer JSON-Eigenschaft zu bestimmen.

JSON-Eigenschaft Zweck
"requirements.capabilities" Gibt die Anforderungssätze an , die das Add-In installieren können muss.
"requirements.scopes" Identifiziert die Office-Anwendungen, in denen das Add-In installiert werden kann. Beispielsweise bedeutet "mail", dass das Add-In in Outlook installiert werden kann.
"Menübänder" Die Menübänder, die das Add-In anpassen.
"ribbons.contexts" Gibt die Befehlsoberflächen an, die das Add-In anpasst. Beispiel: "mailRead" oder "mailCompose".
"ribbons.tabs" Konfiguriert benutzerdefinierte Menübandregisterkarten.
"alternatives" Gibt Die Abwärtskompatibilität mit einem entsprechenden COM-Add-In, XLL oder beidem an.
"runtimes" Konfiguriert die eingebetteten Runtimes , die das Add-In verwendet, einschließlich verschiedener Arten von Add-Ins, die wenig oder keine Benutzeroberfläche haben, z. B. benutzerdefinierte Add-Ins, die nur funktionen und Funktionsbefehle verwenden.
"autoRunEvents" Konfiguriert einen Ereignishandler für ein angegebenes Ereignis.

Angeben sicherer Domänen

Die Manifestdatei enthält ein "validDomains"-Array, das Verwendet wird, um Office mitzuteilen, zu welchen Domänen Ihr Add-In navigieren darf. Wie unter Angeben von Domänen angegeben, die Sie im Add-In-Fenster öffnen möchten, kann Ihr Aufgabenbereich bei der Ausführung in Office im Web zu einer beliebigen URL navigiert werden. Wenn Ihr Add-In auf Desktopplattformen jedoch versucht, zu einer URL in einer anderen Domäne als der Domäne zu wechseln, in der die Startseite gehostet wird, wird diese URL in einem neuen Browserfenster außerhalb des Add-In-Bereichs der Office-Anwendung geöffnet.

Um dieses Verhalten auf Desktopplattformen außer Kraft zu setzen, fügen Sie jede Domäne, die Sie im Add-In-Fenster öffnen möchten, der Liste der Domänen hinzu, die im Array "validDomains" angegeben sind. Wenn das Add-In versucht, zu einer URL in einer Domäne zu wechseln, die in der Liste enthalten ist, wird sie in Office im Web und Desktop-Office im Aufgabenbereich geöffnet. Wenn versucht wird, zu einer URL zu wechseln, die nicht in der Liste enthalten ist, wird diese URL in Office auf dem Desktop in einem neuen Browserfenster (außerhalb des Add-In-Aufgabenbereichs) geöffnet.

Beispiel für ein einheitliches Manifest in der Vorschau

Im Folgenden sehen Sie ein Beispiel für ein Vorschaumanifest für eine einheitliche App für ein Add-In.

{
  "$schema": "https://raw.githubusercontent.com/OfficeDev/microsoft-teams-app-schema/op/extensions/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"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "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"
            }
          }
        }
      ]
    }
  ]
}

Siehe auch