Share via


Coautoria em suplementos do Excel

Com a coautoria, várias pessoas podem trabalhar juntas e editar simultaneamente a mesma pasta de trabalho do Excel. Todos os coautores de uma pasta de trabalho podem ver as alterações de outros coautores assim que o coautor salva a pasta de trabalho. Para ser coautor de uma pasta de trabalho do Excel, esta deve ser armazenada no OneDrive, OneDrive for Business ou SharePoint Online.

Importante

Em Excel para Microsoft 365, você observará AutoSave no canto superior esquerdo. Quando o Salvamento Automático estiver ativado, os coautores verão as respectivas alterações em tempo real. Considere o impacto desse comportamento no design do seu suplemento do Excel. Os usuários podem desativar o Salvamento Automático pelo botão no canto superior esquerdo da janela do Excel.

Visão geral da coautoria

Quando você altera o conteúdo de uma pasta de trabalho, o Excel sincroniza automaticamente essas alterações entre todos os coautores. Os coautores podem alterar o conteúdo de uma pasta de trabalho, assim como o código em execução em um suplemento do Excel. Por exemplo, quando o código JavaScript a seguir é executado em um Suplemento do Office, o valor de um intervalo é definido como Contoso.

range.values = [['Contoso']];

Depois que "Contoso" é sincronizado entre todos os coautores, qualquer usuário ou suplemento em execução na mesma pasta de trabalho verá o novo valor do intervalo.

A coautoria sincroniza apenas o conteúdo dentro da pasta de trabalho compartilhada. Os valores copiados da pasta de trabalho em variáveis de JavaScript em um suplemento do Excel não são sincronizados. Por exemplo, se seu suplemento armazenar o valor de uma célula (como "Contoso") em uma variável de JavaScript e um coautor alterar o valor da célula para "Exemplo", após a sincronização todos os coautores verão "Exemplo" na célula. No entanto, o valor da variável de JavaScript continuará definido como "Contoso". Além disso, quando vários autores usarem o mesmo suplemento, cada coautor terá sua própria cópia da variável, que não é sincronizada. Quando você usar variáveis que usam o conteúdo da pasta de trabalho, não se esqueça de verificar se há valores atualizados na pasta de trabalho antes de usar a variável.

Usar eventos para gerenciar o estado na memória do suplemento

Os suplementos do Excel podem ler conteúdo da pasta de trabalho (de planilhas ocultas e um objeto de configuração) e armazená-lo em estruturas de dados, como variáveis. Depois que os valores originais são copiados em qualquer uma dessas estruturas de dados, os coautores podem atualizar o conteúdo da pasta de trabalho original. Isso significa que os valores copiados nas estruturas de dados agora estão fora de sincronia com o conteúdo da pasta de trabalho. Ao criar seus suplementos, lembre-se dessa separação do conteúdo da pasta de trabalho e dos valores armazenados em estruturas de dados.

Por exemplo, você pode criar um suplemento de conteúdo que exibe visualizações personalizadas. O estado de suas visualizações personalizadas pode ser salvo em uma planilha oculta. Quando os coautores usam a mesma pasta de trabalho, o cenário a seguir pode ocorrer.

  • O Usuário A abre o documento e as visualizações personalizadas são mostradas na pasta de trabalho. As visualizações personalizadas leem dados de uma planilha oculta (por exemplo, a cor das visualizações é definida como azul).
  • O usuário B abre o mesmo documento e começa a modificar as visualizações personalizadas. O usuário B define a cor das visualizações personalizadas para laranja. A cor laranja é salva para a planilha oculta.
  • A planilha oculta do Usuário A é atualizada com o novo valor laranja.
  • As visualizações personalizadas do Usuário A continuam azuis.

Se quiser que as visualizações personalizadas do Usuário A respondam às alterações feitas pelos coautores na planilha oculta, use o evento BindingDataChanged. Isso garante que as alterações no conteúdo da pasta de trabalho feitas pelos coautores sejam refletidas no estado do seu suplemento.

Advertências para usar eventos com coautoria

Conforme descrito anteriormente, em alguns cenários, acionar eventos para todos os coautores proporciona uma experiência do usuários aprimorada. No entanto, lembre-se de que, em alguns cenários, esse comportamento pode resultar em uma má experiência do usuário.

Por exemplo, em cenários de validação de dados, é comum exibir a interface do usuário em resposta a eventos. O evento BindingDataChanged descrito na seção anterior é executado quando um usuário local ou coautor (remoto) altera o conteúdo da pasta de trabalho na associação. Se o manipulador de eventos do BindingDataChanged evento exibir a interface do usuário, os usuários verão a interface do usuário sem relação com as alterações em que estavam trabalhando na pasta de trabalho, levando a uma má experiência do usuário. Evite a exibição da interface do usuário ao usar eventos no suplemento.

Evitar conflitos de coautoria de linha de tabela

É um problema conhecido que chama a TableRowCollection.add API pode causar conflitos de coautoria. Não recomendamos usar essa API se você antecipar que seu suplemento será executado enquanto outros usuários estiverem editando a pasta de trabalho do suplemento (especificamente, se eles estiverem editando a tabela ou qualquer intervalo sob a tabela). As diretrizes a seguir devem ajudá-lo a evitar problemas com o TableRowCollection.add método (e evitar disparar a barra amarela que o Excel mostra que pede que os usuários atualizem).

  1. Use Range.values em vez de TableRowCollection.add. Definir os Range valores diretamente abaixo da tabela expande automaticamente a tabela. Caso contrário, adicionar linhas de tabela por meio das Table APIs resulta em conflitos de mesclagem para usuários de coautoria.
  2. Não deve haver regras de validação de dados aplicadas a células abaixo da tabela, a menos que a validação de dados seja aplicada a toda a coluna.
  3. Se houver dados na tabela, o suplemento precisará lidar com isso antes de definir o valor de intervalo. Usar Range.insert para inserir uma linha vazia moverá os dados e abrirá espaço para a tabela em expansão. Caso contrário, você corre o risco de substituir células abaixo da tabela.
  4. Você não pode adicionar uma linha vazia a uma tabela com Range.values. A tabela só se expande automaticamente se os dados estiverem presentes nas células diretamente abaixo da tabela. Use dados temporários ou colunas ocultas como uma solução alternativa para adicionar uma linha de tabela vazia.

Confira também