Freigeben über


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

In diesem Artikel wird das einheitliche App-Manifest für Microsoft 365 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 ist die Möglichkeit, eine einzelne Verteilungseinheit für alle Microsoft 365-Erweiterungen mithilfe desselben Manifestformats und Schemas zu erstellen.

Wir haben einen wichtigen ersten Schritt auf dem Weg zu diesen Zielen gemacht, indem wir Es Ihnen ermöglicht haben, Outlook-Add-Ins mit einem einheitlichen Manifest für Microsoft 365 zu erstellen.

Hinweis

  • Das einheitliche Manifest unterstützt derzeit nur Outlook-Add-Ins und nur in Office, die mit einem Microsoft 365-Abonnement verknüpft sind und unter Windows, auf einem mobilen Gerät oder in Outlook im Web installiert sind. Wir arbeiten daran, die Unterstützung auf Excel, PowerPoint und Word sowie auf Outlook auf Mac und unbefristete Versionen von Office zu erweitern.
  • Das einheitliche Manifest erfordert Office Version 2304 (Build 16320.00000) oder höher.

Tipp

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

Wichtige Eigenschaften des einheitlichen Manifests

Die Standard Referenzdokumentation für die Version des einheitlichen App-Manifests finden Sie unter Manifestschema. 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 Beispielmanifest.

Basiseigenschaften

Jede der in der folgenden Tabelle aufgeführten Basiseigenschaften enthält eine ausführlichere Dokumentation unter Manifestschema. 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. Das Format muss sein n.n.n , in dem jede n nicht mehr als fünf Ziffern sein darf.
"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.
"Alternates" Gibt Die Abwärtskompatibilität mit einem entsprechenden COM-Add-In, XLL oder beidem an. Gibt auch die Standard Symbole an, die verwendet werden, um das Add-In in älteren Versionen von Office darzustellen.
"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

Es folgt ein Beispiel für ein einheitliches App-Manifest 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"
                    }
                  ]
                }
              ],
              "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"
            }
          }
        }
      ]
    }
  ]
}

Siehe auch