Partilhar via


Suplementos do Office com o manifesto de aplicação unificada para o Microsoft 365

Este artigo apresenta o manifesto da aplicação unificada para o Microsoft 365. Pressupõe que está familiarizado com o manifesto de Suplementos do Office.

Dica

A Microsoft está fazendo várias melhorias na plataforma de desenvolvedor do Microsoft 365. Essas melhorias fornecem mais consistência no desenvolvimento, implantação, instalação e administração de todos os tipos de extensões do Microsoft 365, incluindo os suplementos do Office. Essas alterações são compatíveis com os suplementos existentes.

Uma melhoria importante é a capacidade de criar uma única unidade de distribuição para todas as extensões do Microsoft 365 com o mesmo formato e esquema de manifesto.

Demos um primeiro passo importante rumo a estes objetivos ao permitir-lhe criar suplementos do Outlook com um manifesto unificado para o Microsoft 365.

Observação

O manifesto unificado do Microsoft 365 pode ser utilizado nos suplementos de produção do Outlook. Está disponível apenas como uma pré-visualização para suplementos do Excel, PowerPoint e Word.

Dica

Está pronto para começar a utilizar o manifesto unificado? Comece por Criar um suplemento do Outlook com o manifesto unificado do Microsoft 365.

Propriedades principais do manifesto unificado

A documentação de referência principal para a versão do manifesto da aplicação unificada encontra-se na referência do esquema de manifesto da aplicação Microsoft 365. Neste artigo, fornecemos uma breve descrição do significado das propriedades base quando a Aplicação para Microsoft 365 é (ou inclui) um Suplemento do Office. Segue-se alguma documentação básica para a propriedade e as "extensions" respetivas propriedades descendentes. Existe um manifesto de exemplo completo para um suplemento em Manifesto unificado de exemplo.

Propriedades base

Cada uma das propriedades base listadas na tabela seguinte tem documentação mais extensa no esquema de manifesto da aplicação Microsoft 365. As propriedades base não incluídas nesta tabela não têm qualquer significado para suplementos do Office.

Propriedade JSON Objetivo
"$schema" Identifica o esquema do manifesto.
"manifestVersion" Versão do esquema do manifesto.
"id" GUID da Aplicação para Microsoft 365.
"version" Versão da Aplicação para Microsoft 365. O formato tem de estar n.n.n onde cada um n não pode ter mais de cinco dígitos.
"name" Nomes públicos curtos e longos da Aplicação para Microsoft 365. O nome abreviado é apresentado na parte superior do painel de tarefas de um suplemento.
"description" Descrições curtas e longas públicas da Aplicação para Microsoft 365.
"developer" Informações sobre o programador da Aplicação para Microsoft 365.
"localizationInfo" Configura a localidade padrão e outras localidades com suporte.
"validDomains" Veja Especificar domínios seguros.
"webApplicationInfo" Identifica a aplicação Web da Aplicação para Microsoft 365 como é conhecida no Microsoft Entra ID.
"authorization" Identifica todas as permissões do Microsoft Graph que o suplemento precisa.

"extensions" propriedade

Estamos a trabalhar arduamente para concluir a documentação de referência para a "extensions" propriedade e as respetivas propriedades descendentes. Entretanto, o seguinte fornece alguma documentação básica. A maioria, mas não todas, das propriedades tem um elemento (ou atributo) equivalente no manifesto apenas do suplemento para suplementos. Na maior parte das vezes, a descrição e as restrições que se aplicam ao elemento ou atributo XML também se aplicam à respetiva propriedade JSON equivalente no manifesto unificado. As tabelas na secção ""extensions" propriedade" de Comparar o manifesto apenas do suplemento com o manifesto unificado do Microsoft 365 podem ajudá-lo a determinar o equivalente XML de uma propriedade JSON.

Observação

Esta tabela contém apenas algumas propriedades representativas descendentes selecionadas de "extensions". Não é uma lista exaustiva de todas as propriedades subordinadas de "extensions". Para obter a referência completa do manifesto unificado, veja a referência do esquema de manifesto da aplicação Microsoft 365.

Propriedade JSON Objetivo
"requirements.capabilities" Identifica os conjuntos de requisitos que o suplemento precisa de ser instalável.
"requirements.scopes" Identifica os aplicativos do Office nos quais o suplemento pode ser instalado. Por exemplo, "mail" significa que o suplemento pode ser instalado no Outlook.
"ribbons" As faixas de opções que o suplemento personaliza.
"ribbons.contexts" Especifica as superfícies de comando que o suplemento personaliza. Por exemplo: "mailRead" ou "mailCompose".
"ribbons.fixedControls" Configura e adiciona o botão de um suplemento integrado de relatórios de spam ao friso do Outlook.
"ribbons.spamPreProcessingDialog" Configura a caixa de diálogo de pré-processamento apresentada após a seleção do botão de um suplemento de relatório de spam no friso do Outlook.
"ribbons.tabs" Configura guias personalizadas da faixa de opções.
"alternates" Especifica a compatibilidade de versões anteriores com um suplemento COM equivalente, XLL ou ambos. Também especifica os ícones principais que são utilizados para representar o suplemento em versões mais antigas do Office.
"runtimes" Configura os runtimes incorporados que o suplemento utiliza, incluindo vários tipos de suplementos que têm pouca ou nenhuma IU, como suplementos só de função personalizados e comandos de função.
"autoRunEvents" Remove um manipulador de eventos de um evento especificado.
"keyboardShortcuts" (pré-visualização do programador) Define atalhos de teclado personalizados ou combinações de teclas para executar ações específicas.

Especificar domínios seguros

Existe uma "validDomains" matriz no ficheiro de manifesto que é utilizada para indicar ao Office quais os domínios para os quais o seu suplemento deve ter permissão para navegar. Conforme indicado em Especificar domínios que pretende abrir na janela do suplemento, ao executar no Office na Web, o painel de tarefas pode ser navegado para qualquer URL. No entanto, nas plataformas de ambiente de trabalho, se o seu suplemento tentar aceder a um URL num domínio diferente do domínio que aloja a página inicial, esse URL é aberto numa nova janela do browser fora do painel de suplementos da aplicação do Office.

Para substituir este comportamento em plataformas de ambiente de trabalho, adicione cada domínio que pretende abrir na janela do suplemento à lista de domínios especificados na "validDomains" matriz. Se o suplemento tentar ir para uma URL em um domínio que está na lista, ela então abre no painel de tarefas do Office para desktop e no Office Online. Se tentar aceder a um URL que não está na lista, no Office no ambiente de trabalho, esse URL é aberto numa nova janela do browser (fora do painel de tarefas do suplemento).

Suporte de cliente e plataforma

Os suplementos que utilizam o manifesto unificado podem ser instalados se a plataforma do Office o suportar diretamente .

Para executar um suplemento em plataformas que não suportam diretamente o manifesto unificado, tem de publicar o suplemento no Microsoft Marketplace. Em seguida, implemente o suplemento no Centro de administração do Microsoft 365. Desta forma, é gerado um manifesto apenas de suplemento a partir do manifesto unificado e armazenado. O manifesto apenas do suplemento é utilizado para instalar o suplemento em plataformas que não suportam diretamente o manifesto unificado.

As tabelas seguintes listam as plataformas do Office que suportam diretamente suplementos que utilizam o manifesto unificado.

Cliente/plataforma Suporte para suplementos com o manifesto unificado
Office na Web Suportado diretamente
Office no Windows (Versão 2304 (Compilação 16320.00000) ou posterior) ligado a uma subscrição do Microsoft 365 Suportado diretamente
novo Outlook no Windows Suportado diretamente
Office no Windows (anterior à Versão 2304 (Compilação 16320.00000)) ligado a uma subscrição do Microsoft 365 Não suportado diretamente
Office no Windows (versões perpétuas) Não suportado diretamente
Office no Mac Não suportado diretamente
Office em dispositivos móveis Não suportado diretamente

Observação

Se estiver a implementar um suplemento no Centro de administração do Microsoft 365 e exigir que seja executado em plataformas que não suportam diretamente o manifesto unificado, o suplemento tem de ser um suplemento do Microsoft Marketplace publicado. Os suplementos personalizados ou suplementos de linha de negócio (LOB) que utilizam o manifesto unificado podem ser implementados no portal aplicações integradas do Centro de administração do Microsoft 365, mas não serão instaláveis em versões do Office que não suportem diretamente o manifesto unificado.

Manifesto unificado de exemplo

Segue-se um exemplo de um manifesto de aplicação unificado para um suplemento. Não contém todas as propriedades de manifesto possíveis.

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

Confira também