Compléments Office avec le manifeste d’application unifié pour Microsoft 365

Cet article présente le manifeste d’application unifié pour Microsoft 365. Il suppose que vous êtes familiarisé avec le manifeste des compléments Office.

Conseil

Microsoft apporte un certain nombre d’améliorations à la plateforme de développement Microsoft 365. Ces améliorations offrent une cohérence accrue dans le développement, le déploiement, l’installation et l’administration de tous les types d’extensions de Microsoft 365, y compris les compléments Office. Ces modifications sont compatibles avec les compléments existants.

Une amélioration importante est la possibilité de créer une seule unité de distribution pour toutes vos extensions Microsoft 365 en utilisant le même format de manifeste et le même schéma.

Nous avons fait un premier pas important vers ces objectifs en vous permettant de créer des compléments Outlook avec un manifeste unifié pour Microsoft 365.

Remarque

  • Actuellement, le manifeste unifié prend uniquement en charge les compléments Outlook et uniquement dans Office lié à un abonnement Microsoft 365 et installé sur Windows, sur un appareil mobile ou dans Outlook sur le web. Nous travaillons à l’extension de la prise en charge d’Excel, PowerPoint et Word, ainsi que d’Outlook sur Mac et des versions perpétuelles d’Office.
  • Le manifeste unifié nécessite Office version 2304 (build 16320.00000) ou ultérieure.

Conseil

Vous êtes prêt à commencer avec le manifeste unifié ? Commencez par Créer un complément Outlook avec le manifeste unifié pour Microsoft 365.

Propriétés clés du manifeste unifié

La documentation de référence main pour la version du manifeste d’application unifiée se trouve dans Référence du manifeste unifié. (Pour obtenir la référence du manifeste qui inclut toutes les dernières fonctionnalités en préversion, consultez Préversion publique pour les développeurs pour le manifeste unifié.) Dans cet article, nous fournissons une brève description de la signification des propriétés de base lorsque l’application Teams est (ou inclut) un complément Office. Ceci est suivi d’une documentation de base pour la propriété « extensions » et ses propriétés descendantes. Il existe un exemple de manifeste complet pour un complément dans Exemple de manifeste unifié.

Propriétés de base

Chacune des propriétés de base répertoriées dans le tableau suivant contient une documentation plus complète dans Schéma de manifeste. Les propriétés de base non incluses dans ce tableau n’ont aucune signification pour les compléments Office.

Propriété JSON Objectif
« $schema » Identifie le schéma de manifeste.
« manifestVersion » Version du schéma de manifeste.
"id" GUID de l’application/complément Teams.
« version » Version de l’application/complément Teams. Le format doit être n.n.n où chacun n ne peut pas comporter plus de cinq chiffres.
« nom » Noms courts et longs publics de l’application/du complément Teams. Le nom court apparaît en haut du volet Office d’un complément.
« description » Descriptions courtes et longues publiques de l’application/complément Teams.
« développeur » Informations sur le développeur de l’application/complément Teams.
« localizationInfo » Configure les paramètres régionaux par défaut et les autres paramètres régionaux pris en charge.
« validDomains » Consultez Spécifier des domaines sécurisés.
« webApplicationInfo » Identifie l’application web de l’application/complément Teams telle qu’elle est connue dans Azure Active Directory.
« autorisation » Identifie les autorisations Microsoft Graph dont le complément a besoin.

Propriété « extensions »

Nous travaillons d’arrache-pied pour compléter la documentation de référence sur la propriété « extensions » et ses propriétés descendantes. En attendant, les informations suivantes fournissent une documentation de base. La plupart des propriétés, mais pas toutes, ont un élément (ou attribut) équivalent dans le manifeste du complément uniquement pour les compléments. Pour la plupart, la description et les restrictions qui s’appliquent à l’élément ou à l’attribut XML s’appliquent également à sa propriété JSON équivalente dans le manifeste unifié. Les tables de la section « extensions » de la section Comparer le manifeste du complément uniquement avec le manifeste unifié pour Microsoft 365 peuvent vous aider à déterminer l’équivalent XML d’une propriété JSON.

Remarque

Ce tableau contient uniquement quelques propriétés descendantes représentatives sélectionnées de « extensions ». Il ne s’agit pas d’une liste exhaustive de toutes les propriétés enfants de « extensions ». Pour obtenir la référence complète du manifeste unifié, consultez Manifeste unifié pour Microsoft 365. Pour obtenir la référence du manifeste qui inclut toutes les dernières fonctionnalités de préversion, consultez Préversion publique pour les développeurs pour le manifeste unifié pour Microsoft 365.

Propriété JSON Objectif
« requirements.capabilities » Identifie les ensembles de conditions requises que le complément doit être installable.
« étendues des conditions » Identifie les applications Office dans lesquelles le complément peut être installé. Par exemple, « courrier » signifie que le complément peut être installé dans Outlook.
« rubans » Rubans personnalisés par le complément.
« ribbons.contexts » Spécifie les surfaces de commande que le complément personnalise. Par exemple, « mailRead » ou « mailCompose ».
« ribbons.fixedControls » (préversion pour les développeurs) Configure et ajoute le bouton d’un complément intégré de création de rapports de courrier indésirable au ruban Outlook.
« ribbons.spamPreProcessingDialog » (préversion pour les développeurs) Configure la boîte de dialogue de prétraitement affichée après l’sélection du bouton d’un complément de création de rapports de courrier indésirable dans le ruban Outlook.
« ribbons.tabs » Configure les onglets du ruban personnalisé.
« remplaçants » Spécifie la compatibilité descendante avec un complément COM équivalent, XLL ou les deux. Spécifie également les icônes main utilisées pour représenter le complément sur les versions antérieures d’Office.
« runtimes » Configure les runtimes incorporés que le complément utilise, y compris différents types de compléments qui ont peu ou pas d’interface utilisateur, comme les compléments de fonction uniquement personnalisés et les commandes de fonction.
« AutoRunEvents » Configure un gestionnaire d’événements pour un événement spécifié.

Spécifier des domaines sécurisés

Il existe un tableau « validDomains » dans le fichier manifeste qui est utilisé pour indiquer à Office les domaines vers lesquels votre complément doit être autorisé à accéder. Comme indiqué dans Spécifier les domaines que vous souhaitez ouvrir dans la fenêtre de complément, lors de l’exécution dans Office sur le Web, votre volet Office peut être redirigé vers n’importe quelle URL. Toutefois, sur les plateformes de bureau, si votre complément tente d’accéder à une URL dans un domaine autre que le domaine qui héberge la page de démarrage, cette URL s’ouvre dans une nouvelle fenêtre de navigateur en dehors du volet de complément de l’application Office.

Pour remplacer ce comportement dans les plateformes de bureau, ajoutez chaque domaine que vous souhaitez ouvrir dans la fenêtre de complément à la liste des domaines spécifiés dans le tableau « validDomains ». Si le complément tente d’accéder à une URL située dans un domaine figurant dans cette liste, il s’ouvre dans le volet Office d’Office sur le web et de la version de bureau d’Office. Si elle tente d’accéder à une URL qui ne figure pas dans la liste, dans Office sur le bureau, cette URL s’ouvre dans une nouvelle fenêtre de navigateur (en dehors du volet Office du complément).

Exemple de manifeste unifié

Voici un exemple de manifeste d’application unifiée pour un complément. Il ne contient pas toutes les propriétés de manifeste possibles.

{
  "$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"
            }
          }
        }
      ]
    }
  ]
}

Voir aussi