Så här använder du Flow för att kopiera objekt mellan två datakällor

Den här artikeln beskriver hur du använder Microsoft Flow för att kopiera objekt mellan två datakällor effektivt.

Du kan till exempel skapa ett flöde för att kopiera alla objekt från en SharePoint-lista på en webbplats till en andra SharePoint-webbplats. Flödesprocessen fungerar också mellan en SharePoint-lista och en SQL-tabell eller någon av de mer än 100 tjänster som stöds av Flow.

Gäller för: Power Automate
Ursprungligt KB-nummer: 4467880

Mer information

Du måste fylla i alla kolumner som krävs. Det finns inget krav på att namnen på alla kolumner i dina två datakällor ska vara desamma, men det måste finnas minst en kolumn (du väljer) som unikt kan identifiera objekt mellan de två datakällorna.

I följande exempel antar vi att kolumnen Rubrik är densamma i båda källorna.

Konfigurera utlösaren

Det första steget är att konfigurera utlösaren i SharePoint-källlistan. Eftersom du vill samla in alla objektändringar (inte bara nya objekt) bör du välja utlösaren SharePoint – När ett befintligt objekt ändras .

Skärmbild för att välja utlösaren När ett befintligt objekt ändras i Sharepoint.

Obs!

Även om utlösarnamnet bara nämner ändringar av befintliga objekt, reagerar utlösaren också på nya objekt som läggs till i listan.

Hitta objektet i målet

Sök efter objektet i mållistan för att hämta dess ID och uppdatera det. Även om Flow har en filteråtgärd bör du inte använda den åtgärden i det här scenariot eftersom den åtgärden hämtar alla listobjekt från SharePoint. Processen går långsamt, din kvot används och fungerar inte om listan innehåller fler än 256 objekt.

I stället bör du använda fältet Filterfråga i steget Hämta objekt i SharePoint. Lägg till åtgärden Hämta objekt och välj sedan Visa avancerade alternativ för att visa alla fält. Om du matchar rubrikerna för raderna i källlistan skriver du följande i fältet Filterfråga (se till att du inkluderar de enkla citattecknen):

Rubrik eq "[välj rubriken från dynamiskt innehåll]"

Skärmbild som anger rubriken i fältet Filterfråga i steget Hämta objekt.

Du behöver inte nödvändigtvis ha en strikt 1:1-kolumnmappning mellan de två datakällorna. Om du till exempel har kolumnerna Förnamn och Efternamn i källlistan och en kolumn med fullständigt namn i mållistan kan du skriva FullName eq [Förnamn] [Efternamn] i fältet Listnamn .

Lägg till ett villkor för att kontrollera om objektet finns

När du hämtar objekten från mållistan är en av följande situationer sann:

  • Objektet finns ännu inte i målet, så du måste skapa det.
  • Objektet finns redan i målet och du måste uppdatera det.

Använd ett villkor för att fastställa den faktiska situationen. Gör så här:

  1. Välj Nytt steg och välj sedan Lägg till ett villkor.

  2. Under den vänstra textrutan på kortet Villkor väljer du Lägg till dynamiskt innehåll.

    Obs!

    Samlingen som innehåller listan över alla objekt som returneras av Hämta objekt får namnet value. Kontrollera att du väljer värdet från Hämta objekt (inte från utlösaren om ett befintligt objekt ändras).

    Skärmbild som visar att en värdesamling visas i Hämta objekt när du lägger till ett villkor.

  3. På kortet Villkorväljer du är lika med i rutan Relation och skriver sedan 0 i rutan Värde .

  4. Lägg till längdfunktionen i avancerat läge. Detta är viktigt eftersom innehållet i det dynamiska värdet returnerar listan med objekt. Du måste avgöra om längden på listan (inte värdet) är lika med 0 (noll).

  5. I avancerat läge skriver du length() runt brödtexten('Get_items')?[' value'] uttryck. Villkoret visas på följande sätt.

    Skärmbild av rutan Villkor som visar längden på listan är lika med 0.

Skapa objektet

I grenen OM JA lägger du till ett SharePoint Create-objektsteg .

Välj den webbplats och lista som du använde i stegen Hämta objekt . I Skapa objekt bör du fylla i varje kolumn med hjälp av fält endast från utlösaren. Du bör inte använda några data från stegen Hämta objekt eftersom det skulle komma från mållistan, inte från källlistan. Hämta objekt visas ovanför utlösaren. Se till att du bläddrar längst ned för att hitta den.

Uppdatera objektet

I grenen OM INGEN lägger du till ett SharePoint Update-objektsteg .

Välj webbplatsen och listan. Välj sedan det ID som returneras från stegen Hämta objekt .

Skärmbild där du väljer det ID som returneras från stegen Hämta objekt.

När du lägger till ID:t läggs en Tillämpa på varje container automatiskt till runt steget Uppdatera objekt . Detta är ett förväntat beteende. Om frågan som du använde i steget Hämta objekt är korrekt uppdaterar containern endast det objekt som du vill kopiera. När du har slutfört de återstående fälten (och kontrollera att du använder utdata från utlösaren, inte från anropet Hämta objekt ), bör villkorsblocket likna följande skärmbild.

Skärmbild som visar ett exempel på villkorsblocket.

Begränsningar i flödesprocessen

Med flödesprocessen kan ändringar som görs i den första listan återspeglas i den andra listan.

Följande begränsningar gäller för processen:

  • Om objekt tas bort från den första listan tas objekten inte bort från den andra listan. Det beror på att det inte finns någon utlösare för När ett objekt tas bort. I det här fallet finns det inget sätt för ett flöde att meddelas när en borttagning sker. I stället rekommenderar vi att du lägger till en kolumn som anger att objektet inte längre behövs eller är relevant i stället för att ta bort objekt från SharePoint-listor (eller SQL-tabeller eller annan datakälla). Den kolumnen synkroniseras mellan de två listorna.
  • Om ändringar görs i det fält som du använder för att synkronisera objekt mellan de två listorna skapas ett nytt objekt i mållistan. Om du till exempel använder kolumnen Namn för en person för att kopiera mellan de två listorna och personens namnkolumn ändras, anser flödet att ändringen är ett nytt objekt, inte en uppdatering av ett befintligt objekt. Om du kan garantera att kolumnen Namn aldrig ändras påverkas du inte av den här begränsningen. Men om kolumnen Namn ändras måste du lägga till en kolumn i mållistan som lagrar objektets ID i den första listan. I det här fallet kan du använda ID i stället för att använda Namn för att hitta objekt. (ID:t är garanterat alltid unikt).
  • Den här processen är inte en dubbelriktad synkronisering. Det innebär att om objekt uppdateras i mållistan återspeglas inte ändringarna i källlistan. Du bör inte försöka konfigurera tvåvägssynkronisering i flödet eftersom det skapar en oändlig loop utan ytterligare ändringar. List A uppdaterar till exempel listan B, list B uppdaterar lista A, list A uppdaterar listan B igen och så vidare.