Como usar o Flow para copiar itens entre duas fontes de dados
Este artigo descreve como usar o Microsoft Flow para copiar itens entre duas fontes de dados com eficiência.
Por exemplo, você pode criar um fluxo para copiar todos os itens de uma lista do SharePoint em um site para um segundo site do SharePoint. O processo de fluxo também funciona entre uma lista do SharePoint e uma tabela SQL ou qualquer um dos mais de 100 serviços com suporte do Flow.
Aplica-se a: Power Automate
Número de KB original: 4467880
Mais informações
Você deve preencher todas as colunas necessárias. Não há nenhum requisito de que os nomes de todas as colunas em suas duas fontes de dados sejam iguais, mas deve haver pelo menos uma coluna (de sua escolha) que será capaz de identificar exclusivamente itens entre as duas fontes de dados.
No exemplo a seguir, supomos que a coluna Título seja a mesma em ambas as fontes.
Configurar o gatilho
A primeira etapa é configurar o gatilho na lista de origem do SharePoint. Como você deseja capturar todas as alterações de item (não apenas itens novos), você deve selecionar o SharePoint – Quando um item existente é modificado gatilho.
Observação
Embora o nome do gatilho mencione apenas modificações em itens existentes, o gatilho também reage a novos itens adicionados à lista.
Localizar o item no destino
Pesquise o item na lista de destino para obter sua ID e atualizá-lo. Embora o Flow tenha uma ação Filter , você não deve usar essa ação nesse cenário porque essa ação baixa todos os itens de lista do SharePoint. O processo será lento, usará sua cota e não funcionará se a lista tiver mais de 256 itens.
Em vez disso, você deve usar o campo Filtrar Consulta na etapa Obter itens no SharePoint. Adicione a ação Obter itens e selecione Mostrar opções avançadas para mostrar todos os campos. Se você estiver correspondendo aos títulos das linhas da lista de origem, digite o seguinte no campo Filtrar Consulta (certifique-se de incluir as aspas individuais):
Título eq '[selecione o título no conteúdo dinâmico]'
Você não precisa necessariamente ter um mapeamento de coluna 1:1 rigoroso entre as duas fontes de dados. Por exemplo, se você tiver colunas Nome e Sobrenome na lista de origem e uma coluna nome completo na lista de destino, poderá digitar FullName eq '[Nome] [Sobrenome]' no campo Nome da Lista .
Adicionar uma condição para marcar se o item existe
Quando você obtém os itens da lista de destino, uma das seguintes situações será verdadeira:
- O item ainda não existe no destino, portanto, você precisa criá-lo.
- O item já existe no destino e você precisa atualizá-lo.
Use uma condição para determinar a situação real. Para fazer isso, siga estas etapas:
Selecione Nova etapa e selecione Adicionar uma condição.
Na caixa de texto à esquerda no cartão Condição, selecione Adicionar conteúdo dinâmico.
Observação
A coleção que contém a lista de todos os itens retornados pelos itens Get é denominada valor. Certifique-se de selecionar o valor de Obter itens (não no gatilho se um item existente for alterado).
Na condição cartão, selecione é igual a na caixa Relacionamento e digite 0 na caixa Valor.
Adicione a função de comprimento no modo Avançado. Isso é importante porque o conteúdo de valor dinâmico retorna a lista de itens. Você precisa determinar se o comprimento da lista (não o valor) é igual a 0 (zero).
No modo Avançado, digite comprimento() ao redor do corpo('Get_items')?[' expressão value'] . Sua condição aparece da seguinte maneira.
Criar o item
No branch IF YES , você adicionará uma etapa do item Criar do SharePoint.
Selecione o site e a lista que você usou nas etapas Obter itens . Em Criar item, você deve preencher cada coluna usando campos somente do gatilho. Você não deve usar nenhum dado das etapas Obter itens porque isso viria da lista de destino, não da lista de origem. Obter itens será exibido acima do gatilho. Verifique se você rola até a parte inferior para encontrá-lo.
Atualizar o item
No branch IF NO , você adicionará uma etapa de item do SharePoint Update .
Selecione o site e a lista. Em seguida, selecione a ID retornada nas etapas Obter itens .
Quando você adiciona a ID, um Aplicar a cada contêiner é adicionado automaticamente em torno da etapa Atualizar item . Esse é um comportamento esperado. Se a consulta usada na etapa Obter itens for precisa, o contêiner atualizará apenas o item que você deseja copiar. Depois de concluir os campos restantes (e certifique-se de usar as saídas do gatilho, não da chamada Obter itens ), seu bloco de condições deve se assemelhar à captura de tela a seguir.
Limitações do processo de fluxo
O processo de fluxo permite que as alterações feitas na primeira lista sejam refletidas na segunda lista.
As seguintes limitações se aplicam ao processo:
- Se os itens forem excluídos da primeira lista, os itens não serão excluídos da segunda lista. Isso ocorre porque não há gatilho para Quando um item é excluído. Nesse caso, não há como um fluxo ser notificado quando ocorre uma exclusão. Em vez disso, recomendamos adicionar uma coluna para indicar que o item não é mais necessário ou relevante em vez de excluir itens de listas do SharePoint (ou tabelas SQL ou outra fonte de dados). Essa coluna será sincronizada entre as duas listas.
- Se forem feitas alterações no campo que você está usando para manter os itens em sincronização entre as duas listas, um novo item será criado na lista de destino. Por exemplo, se você usar a coluna Nome de uma pessoa para copiar entre as duas listas e a coluna Nome dessa pessoa for alterada, o fluxo considerará essa alteração como um novo item, não uma atualização para um item existente. Se você puder garantir que a coluna Nome nunca será alterada, você não será afetado por essa limitação. No entanto, se a coluna Nome for alterada, você precisará adicionar à lista de destino uma coluna que armazena a ID do item na primeira lista. Nesse caso, em vez de usar Nome para localizar itens, você pode usar ID. (A ID é garantida como sempre exclusiva).
- Esse processo não é uma sincronização bidirecional. Isso significa que, se os itens forem atualizados na lista de destino, as alterações não serão refletidas na lista de origem. Você não deve tentar configurar a sincronização bidirecional no fluxo porque isso criará um loop infinito sem modificações adicionais. Por exemplo, a lista A atualizará a lista B, a lista B atualizará a lista A, a lista A atualizará a lista B novamente e assim por diante.