Provisionando sites de equipe "modernos" de forma programática

Os sites "modernos" foram introduzidos no SharePoint Online durante o outono de 2016, e a opção de usá-los pode ser controlada no nível do locatário. Este artigo discute as diferentes opções e considerações para provisionamento de sites "modernos" no SharePoint Online. Em particular, o artigo aborda como criar os sites "modernos” de equipe e os sites “modernos” de comunicação.

Importante

Não estamos substituindo a experiência "clássica", ambas “clássica” e “moderna” coexistirão.

Comparando sites de equipe “modernos” e sites de comunicação modernos

Antes de se aprofundar nos detalhes sobre como provisionar os sites "modernos", vamos discutir um pouco sobre os dois tipos principais de aplicativos disponíveis: sites de equipe e sites de comunicação.

Um site de equipe "moderno" é um local onde um grupo de pessoas pode trabalhar em conjunto, colaborar e compartilhar documentos e mensagens. Todo site de equipe "moderno" tem um grupo de backup da Microsoft 365 para melhorar a experiência de colaboração geral. Na verdade, graças ao grupo Microsoft 365, os membros da equipe podem se beneficiar de serviços como o Planner, o calendário compartilhado, o armazenamento do OneDrive para empresas compartilhado e os conectores personalizados do Office 365. Em um site de equipe "moderno", normalmente, os membros podem contribuir para o conteúdo (leitura/gravação). Além disso, o grupo do Microsoft 365 fazendo backup de um site de equipe "moderno" pode ser particular ou público e, por padrão, é público.

Um site de comunicação "moderno" é um local onde você pode compartilhar notícias, exibir uma história ou transmitir uma mensagem. A ideia de um site de comunicação é ter poucos editores que criam e mantêm o conteúdo e uma grande audiência que consome esse conteúdo. No entanto, um site de comunicação não tem um grupo de backup do Microsoft 365. Os usuários podem acessar o site de comunicações de destino com o conjunto de permissões conhecido de qualquer outro site do SharePoint e, por padrão, todos os sites de comunicação são privados.

Portanto, se você precisar criar um site para colaboração em equipe, provavelmente o site de equipe "moderno" será a opção certa. No contrário, se você quiser comunicar algo a um amplo conjunto de pessoas, provavelmente o site de comunicação é a melhor opção.

Provisionamento de sites de equipe “modernos”

Nesta seção, você aprenderá a provisionar um site de equipe "moderno" e quais são as opções disponíveis para fazer isso.

Configurar um site de equipe "moderno" a partir da interface do usuário

Há várias rotas para um site de equipe "moderno" para ser provisionado. Você pode começar a provisionar diretamente a partir do site do SharePoint Online ou configurar um grupo do Microsoft 365 de outros locais (por exemplo, a partir do Outlook), o que também disparará o provisionamento de um site de equipe "moderno".

  • Se o administrador tiver habilitado os sites “modernos” de equipe no locatário, você poderá criar sites “modernos” de equipe na página inicial do SharePoint.

  • Você também pode criar um grupo do Microsoft 365 a partir do Office 365 Outlook e ao acessar a guia no site desse grupo, você pode chegar a um site de equipe "moderno".

Controlar o fluxo de provisionamento padrão

Você pode controlar o processo de criação de sites do SharePoint a partir das configurações de administração do SharePoint Online. Você pode escolher se a experiência "moderna" está disponível para os usuários finais ou se você quiser continuar usando a experiência "clássica".

Opções de criação de site na IU de administração do SharePoint Online

Para saber mais, confira o seguinte artigo de suporte do Office:

Provisionar um site de equipe "moderno" programaticamente por meio da API REST do SharePoint Online

Os sites “modernos” de equipe podem ser criados programaticamente usando uma API REST fornecida pelo SharePoint Online e também usados pela IU criar site do SharePoint Online. Para provisionar um site de equipe "moderno" por meio do REST, faça uma postagem de solicitação ao ponto de extremidade do Microsoft Graph "grupos": https://graph.microsoft.com/v1.0/groups

O URL do site de equipe "moderno" é determinado pelo parâmetro mailNickname e pelo caminho gerenciado que você seleciona para sites de equipe em sua administração de locatários (esse padrão é "sites").

Os itens a seguir criaram um grupo do Microsoft 365 e um site “moderno” de equipe associado, com uma URL de https://[tenant].sharepoint.com/sites/mymodernteamsite

POST https://graph.microsoft.com/v1.0/groups
Content-type: application/json
Content-length: 200

{
  "description": "description",
  "displayName": "My modern team site",
  "groupTypes": [
    "Unified"
  ],
  "mailEnabled": true,
  "mailNickname": "mymodernteamsite",
  "securityEnabled": false
}

Configurar um site de equipe "moderno" usando o componente CSOM do PnP

No componente Do SharePoint PnP Core , desde a versão de outubro de 2017 (v. 2.19.1710.1), há um novo método de extensão para o tipo CSOM ClientContext . O nome do método de extensão é CreateSiteAsync e permite que você crie um site de equipe "moderno" em questão de segundos.

No trecho de código a seguir, você pode ver como usar esta técnica.

// Let's use the CreateSiteAsync extension method of PnP CSOM Core
// to create the "modern" team site

var targetTenantUrl = "https://[tenant].sharepoint.com/";

using (var context = new ClientContext(targetTenantUrl))
{
    context.Credentials = OfficeDevPnP.Core.Utilities.CredentialManager.GetSharePointOnlineCredential("[Name-of-Your-Credentials]");

    // Create new "modern" team site at the url
    // https://[tenant].sharepoint.com/sites/mymodernteamsite
    var teamContext = await context.CreateSiteAsync(
        new TeamSiteCollectionCreationInformation
        {
            Alias = "mymodernteamsite", // Mandatory
            DisplayName = "displayName", // Mandatory
            Description = "description", // Optional
            Classification = "classification", // Optional
            IsPublic = true, // Optional, default true
        });
    teamContext.Load(teamContext.Web, w => w.Url);
    teamContext.ExecuteQueryRetry();
    Console.WriteLine(teamContext.Web.Url);
}

Observação

Você pode encontrar mais detalhes sobre o argumento classificação no classificação de sites modernos do SharePoint.

Como você pode ver, o método de extensão cria um novo site de equipe moderno e retorna um novo ClientContext objeto diretamente conectado ao site recém-criado.

Configurar um site de equipe "moderno" usando PnP PowerShell

Você também pode criar sites "modernos" usando PnP PowerShell. O seguinte script cria um site de equipe "moderno" e, em seguida, retorna a URL do site do SharePoint propriamente dito. Depois de ter acesso à URL do site criado, você pode usar o CSOM (com o SharePoint core ou o componente PnP) ou o SharePoint PnP-PowerShell para automatizar outras operações no site criado.

# Connect to SharePoint Online
# This command will prompt the sign-in UI to authenticate
Connect-PnPOnline "https://[tenant].sharepoint.com/"

# Create the new "modern" team site
$teamSiteUrl = New-PnPSite -Type TeamSite -Title "displayName" -Alias "mymodernteamsite" -Description "description" -IsPublic -Classification "classification" 

# Connect to the modern site using PnP PowerShell SP cmdlets
# Since we are connecting now to SP side, credentials will be asked
Connect-PnPOnline $teamSiteUrl

# Now we have access on the SharePoint site for any operations
$web = Get-PnPWeb -Includes WebTemplate, Configuration
$web.WebTemplate + "#" + $web.Configuration

Observação

O PnP PowerShell é uma solução de software livre com uma comunidade ativa de suporte. Não há nenhuma SLA para o suporte da ferramenta de software livre por parte da Microsoft.

Configurar um site de equipe "moderno" usando a CLI para o Microsoft 365

Como alternativa, a CLI do Microsoft 365 pode ser usada para criar sites "modernos". A CLI do Microsoft 365 é uma interface de linha de comando de plataforma cruzada que pode ser usada em qualquer plataforma, como Windows, MacOS e Linux.

Observação

A CLI do Microsoft 365 é uma solução de software livre com uma comunidade ativa oferecendo suporte. Não há nenhuma SLA para o suporte da ferramenta de software livre por parte da Microsoft.

O seguinte script de bash criará um site de equipe "moderno" e, em seguida, retornará a URL do site do SharePoint propriamente dito. Depois de ter acesso à URL do site criado, você poderá usá-lo para automatizar outras operações no site criado.

#!/usr/bin/env bash
# Connect to Microsoft 365 tenant
# This command will prompt a sign-in confirmation message to authenticate
m365 login

# Create the new "modern" team site
siteUrl=$(m365 spo site add --type TeamSite --title 'displayName' --alias 'mymodernteamsite' --description 'description' --isPublic --classification 'classification')

# Display the modern site url
echo $siteUrl

# Since the CLI for Microsoft 365 is connected to Microsoft 365 tenant we can do any operations. 
# As example, we can list all the properties from the site property bag:
m365 spo propertybag list -u $siteUrl

Configurar um grupo do Microsoft 365 programaticamente

Os sites de equipe “modernos” podem ser criados programaticamente por meio da criação de um grupo Microsoft 365 usando o Microsoft Graph. Na verdade, quando você cria um grupo do Microsoft 365, um site de equipe "moderno" é provisionado automaticamente para o grupo. O URI do site de equipe "moderno" baseia-se no parâmetro mailNickname do grupo Microsoft 365 e tem a estrutura padrão a seguir.

https://[tenant].sharepoint.com/sites/[mailNickname]

Observação

É possível obter uma descrição detalhada da criação de grupos usando o Microsoft Graph na documentação oficial.

Configurar um grupo do Microsoft 365 usando o componente CSOM do PnP

O componente PnP CSOM Core, disponível como um pacote NuGet, tem métodos simplificados para a manipulação do grupo "moderno".

/// <summary>
/// Let's use the UnifiedGroupsUtility class from PnP CSOM Core to simplify managed code operations for Microsoft 365 groups
/// </summary>
/// <param name="accessToken">Azure AD Access token with Group.ReadWrite.All permission</param>
public static void ManipulateModernTeamSite(string accessToken)
{
    // Create new modern team site at the url https://[tenant].sharepoint.com/sites/mymodernteamsite
    Stream groupLogoStream = new FileStream("C:\\groupassets\\logo-original.png", 
                                            FileMode.Open, FileAccess.Read);
    var group = UnifiedGroupsUtility.CreateUnifiedGroup("displayName", "description", 
                            "mymodernteamsite", accessToken, groupLogo: groupLogoStream);
            
    // We received a group entity containing information about the group
    string url = group.SiteUrl;
    string groupId = group.GroupId;

    // Get group based on groupID
    var group2 = UnifiedGroupsUtility.GetUnifiedGroup(groupId, accessToken);
    // Get SharePoint site URL from group id
    var siteUrl = UnifiedGroupsUtility.GetUnifiedGroupSiteUrl(groupId, accessToken);

    // Get all groups in the tenant
    List<UnifiedGroupEntity> groups = UnifiedGroupsUtility.ListUnifiedGroups(accessToken);

    // Update description and group logo programatically
    groupLogoStream = new FileStream("C:\\groupassets\\logo-new.png", FileMode.Open, FileAccess.Read);
    UnifiedGroupsUtility.UpdateUnifiedGroup(groupId, accessToken, description: "Updated description", 
                                            groupLogo: groupLogoStream);

    // Delete group programatically
    UnifiedGroupsUtility.DeleteUnifiedGroup(groupId, accessToken);
}

Configurar um grupo do Microsoft 365 usando PnP PowerShell

Você também pode criar um grupo do Microsoft 365 usando PnP PowerShell, que permitirá que você autentique facilmente com o Microsoft Graph usando o Azure Active Directory. O seguinte script cria um grupo do Microsoft 365, juntamente com um site de equipe "moderno", e retorna a URL do site do SharePoint propriamente dito. Depois de ter acesso à URL do site criado, você pode usar o CSOM (com o SharePoint core ou o componente PnP) ou o SharePoint PnP-PowerShell para automatizar outras operações no site criado.

# Connect to your SharePoint admin center, credentials will be asked
Connect-PnPOnline -Url https://contoso-admin.sharepoint.com

# Create a new modern team site
New-PnPSite -Type Team -Title "Awesome Group" -Description "Awesome Group" -Alias "awesome-group"

Configurar um site de equipe moderno usando o gerenciamento do SharePoint Online ou o PowerShell para PnP

Também é possível criar um site moderno que não está conectado a um grupo usando o PowerShell. Usando os cmdlets do PowerShell PnP ou o Shell de gerenciamento do SharePoint Online.

$title = "Awesome ModernTeamsite"
$url = "https://contoso.sharepoint.com/sites/awesomemodernteamsite"
$owner = "denisd@contoso.com"

// SharePoint Online Management Shell
New-SPOSite -Title $_title -Url $_url -Owner $owner -StorageQuota 512 -Template "STS#3"

// PnP
New-PnPTenantSite -Url $_url -Description $_title -Title $_title -Template STS#3 -Owner $owner

Configurar um grupo do Microsoft 365 usando a CLI do Microsoft 365

Como alternativa, a CLI do Microsoft 365 pode ser usada para criar um grupo do Microsoft 365.

#!/usr/bin/env bash
# Connect to Microsoft 365 tenant
# This command will prompt a sign-in confirmation message to authenticate
m365 login

# Create a Microsoft 365 group
# The newly created SharePoint site for that group will have the URL
# https://[tenant].sharepoint.com/sites/awesome-group
m365 aad o365group add --displayName 'Awesome Group' --description 'Awesome Group' --mailNickname awesome-group

Provisionamento de sites de comunicação modernos

Nesta seção, você aprenderá a provisionar um site de comunicação "moderno" e quais são as opções disponíveis para fazer isso.

Configurar um site de comunicação "moderno" a partir da interface do usuário

Para provisionar um site de comunicação "moderno" usando a interface do usuário, se o administrador habilitar sites de equipe "modernos" em seu locatário, você poderá iniciar diretamente na página inicial do SharePoint Online. Escolha o botão Criar site, selecione para criar um Site de Comunicação, escolha um design para o seu site, forneça um nome e uma descrição, e o site será criado em questão de segundos.

No momento em que você está escrevendo os designs disponíveis para um site de comunicação, estão:

  • Tópico: Use esse design se você tiver muitas informações para compartilhar, como notícias, eventos e outros tipos de conteúdo.
  • Demonstração: Use esse design para demonstrar um produto, uma equipe ou um evento usando fotos ou imagens.
  • Em branco: comece com um site em branco e faça seu design chegar à vida de maneira rápida e fácil.

Configurar um site de comunicação "moderno" programaticamente

Se preferir, você pode criar um site de comunicação "moderno" por programação usando o CSOM e o PnP ou o PowerShell.

Configurar um site de comunicação "moderno" usando o componente CSOM Core do PnP

O componente PnP CSOM Core, disponível como um pacote NuGet, tem métodos simplificados para a manipulação do grupo "moderno".

// Let's use the CreateSiteAsync extension method of PnP CSOM Core
// to create the "modern" team site

var targetTenantUrl = "https://[tenant].sharepoint.com/";

using (var context = new ClientContext(targetTenantUrl))
{
    context.Credentials = OfficeDevPnP.Core.Utilities.CredentialManager.GetSharePointOnlineCredential("[Name-of-Your-Credentials]");

    // Create new "modern" communication site at the url https://[tenant].sharepoint.com/sites/mymoderncommunicationsite
    var communicationContext = await context.CreateSiteAsync(new CommunicationSiteCollectionCreationInformation {
        Title = "title", // Mandatory
        Description = "description", // Mandatory
        Lcid = 1033, // Mandatory
        AllowFileSharingForGuestUsers = false, // Optional
        Classification = "classification", // Optional
        SiteDesign = CommunicationSiteDesign.Topic, // Mandatory
        Url = "https://[tenant].sharepoint.com/sites/mymoderncommunicationsite", // Mandatory
    });
    communicationContext.Load(communicationContext.Web, w => w.Url);
    communicationContext.ExecuteQueryRetry();
    Console.WriteLine(communicationContext.Web.Url);
}

Como você pode ver, o método de extensão cria um novo site de equipe moderno e retorna um novo objetoClientContext diretamente conectado ao site recém-criado.

Configurar um site de comunicação "moderno" usando PnP PowerShell

O seguinte script cria um site de comunicação "moderno" e, em seguida, retorna a URL do site do SharePoint propriamente dito, similarmente ao exemplo anterior com sites de equipe “modernos”.

# Connect to SharePoint Online
# This command will prompt the sign-in UI to authenticate
Connect-PnPOnline "https://[tenant].sharepoint.com/"

# Create the new "modern" communication site
$communicationSiteUrl = New-PnPSite -Type CommunicationSite -Title "displayName" -Url "https://[tenant].sharepoint.com/sites/mymoderncommunicationsite" -Description "description" -Classification "classification" -SiteDesign Topic

# Connect to the modern site using PnP PowerShell SP cmdlets
# Since we are connecting now to SP side, credentials will be asked
Connect-PnPOnline $communicationSiteUrl

# Now we have access on the SharePoint site for any operations
$context = Get-PnPContext
$web = Get-PnPWeb
$context.Load($web, $web.Title)
Execute-PnPQuery
$web.Title

Configurar um site de equipe "moderno" usando a CLI do Microsoft 365

Como alternativa, a CLI do Microsoft 365 pode ser usada para criar um site de Comunicação "moderno". O seguinte script de bash criará o site e, em seguida, retornará a URL do site do SharePoint propriamente dito. Depois de ter acesso à URL, você poderá usá-lo para automatizar outras operações no site criado.

#!/usr/bin/env bash
# Connect to Microsoft 365 tenant
# This command will prompt a sign-in confirmation message to authenticate
m365 login

# Create the new "modern" communication site
siteUrl=$(m365 spo site add --type CommunicationSite --url https://[tenant].sharepoint.com/sites/mymoderncommunicationsite --title displayName --description description --classification classification)

# Display the modern site url
echo $siteUrl

# Since the CLI for Microsoft 365 is connected to your Microsoft 365 tenant we can do any operations. 
# As example, we can list all the properties from the site property bag:
m365 spo propertybag list -u $siteUrl

Considerações adicionais

Os subsites usam os modelos "clássicos"

Se você configurar um subsite no site raiz de um conjunto de sites "moderno", os subsites usarão os modelos "clássicos". Atualmente, não há modelos de subsites modernos disponíveis. Você pode transformar um subsite "clássico" em um site de equipe "moderno" criando uma página "moderna" no site e atualizando a página de boas-vindas para a página recém-criada.

Caso não pretenda permitir que os usuários criem um subsite "clássico" em um conjunto de sites "moderno", como administrador, você pode acessar o centro de administração do SharePoint, selecionar a página de configurações e configurar a opção para criação de subsites para ocultar o subsite menu de criação. Você pode ver a opção criação do subsite na imagem a seguir.

Opções de criação de subsite na IU de administração do SharePoint Online

Os sites não estão listados na IU de administração clássica do SharePoint/API do locatário

Os sites de equipe do "Modern" não ficam visíveis na IU de administração do SharePoint. Você pode acessar a lista de sites "modernos” de equipe dos grupos do Microsoft 365 no portal de administração do Office 365. A interface de usuário do administrador do SharePoint Online lista os sites do SharePoint "clássicos". Essa mesma limitação não se aplica à API de locatário: você pode usar essa API para enumerar os sites de equipe do "Modern" com os sites de equipe "clássicos". Para obter uma lista de apenas sites “modernos” de equipe, você também pode usar o ponto de extremidade de grupos da API do Microsoft Graph.

Há também uma nova IU de administração do SharePoint, que dá suporte ao gerenciamento de novos conjuntos de sites "modernos", juntamente com as "clássicas".

Confira também