Verwenden von Flow zum Kopieren von Elementen zwischen zwei Datenquellen

In diesem Artikel wird beschrieben, wie Sie Mit Microsoft Flow Elemente effizient zwischen zwei Datenquellen kopieren.

Sie können beispielsweise einen Flow erstellen, um alle Elemente aus einer SharePoint-Liste auf einer Website auf eine zweite SharePoint-Website zu kopieren. Der Flussprozess funktioniert auch zwischen einer SharePoint-Liste und einer SQL-Tabelle oder einem der mehr als 100 Dienste, die von Flow unterstützt werden.

Gilt für: Power Automate
Ursprüngliche KB-Nummer: 4467880

Weitere Informationen

Sie müssen alle erforderlichen Spalten auffüllen. Es ist nicht erforderlich, dass die Namen aller Spalten in Ihren beiden Datenquellen identisch sind, aber es muss mindestens eine Spalte (Ihrer Wahl) vorhanden sein, die Elemente zwischen den beiden Datenquellen eindeutig identifizieren kann.

Im folgenden Beispiel wird davon ausgegangen, dass die Spalte Title in beiden Quellen identisch ist.

Einrichten des Triggers

Der erste Schritt besteht darin, den Trigger in der SharePoint-Quellliste einzurichten. Da Sie alle Elementänderungen (nicht nur neue Elemente) erfassen möchten, sollten Sie den Trigger SharePoint – Wenn ein vorhandenes Element geändert wird auswählen.

Screenshot: Auswählen des Triggers Wenn ein vorhandenes Element in SharePoint geändert wird

Hinweis

Obwohl der Triggername nur Änderungen an vorhandenen Elementen erwähnt, reagiert der Trigger auch auf neue Elemente, die der Liste hinzugefügt werden.

Suchen des Elements im Ziel

Suchen Sie in der Zielliste nach dem Element, um seine ID abzurufen und zu aktualisieren. Obwohl Flow über eine Filteraktion verfügt, sollten Sie diese Aktion in diesem Szenario nicht verwenden, da diese Aktion alle Listenelemente aus SharePoint herunterlädt. Der Prozess ist langsam, beansprucht Ihr Kontingent und funktioniert nicht, wenn die Liste mehr als 256 Elemente enthält.

Stattdessen sollten Sie das Feld Filterabfrage im Schritt Elemente abrufen in SharePoint verwenden. Fügen Sie die Aktion Elemente abrufen hinzu, und wählen Sie dann Erweiterte Optionen anzeigen aus, um alle Felder anzuzeigen. Wenn Sie den Titeln der Zeilen der Quellliste entsprechen, geben Sie Folgendes in das Feld Filterabfrage ein (stellen Sie sicher, dass Sie die einfachen Anführungszeichen einschließen):

Title eq '[Titel aus dynamischem Inhalt auswählen]'

Screenshot: Eingeben des Titels in das Feld

Sie müssen nicht unbedingt über eine strikte 1:1-Spaltenzuordnung zwischen den beiden Datenquellen verfügen. Wenn Sie beispielsweise die Spalten Vorname und Nachname in der Quellliste und die Spalte Vollständiger Name in der Zielliste haben, können Sie FullName eq "[Vorname] [Nachname]" in das Feld Listenname eingeben.

Hinzufügen einer Bedingung, um zu überprüfen, ob das Element vorhanden ist

Wenn Sie die Elemente aus der Zielliste erhalten, trifft eine der folgenden Situationen zu:

  • Das Element ist noch nicht im Ziel vorhanden, daher müssen Sie es erstellen.
  • Das Element ist bereits im Ziel vorhanden, und Sie müssen es aktualisieren.

Verwenden Sie eine Bedingung, um die tatsächliche Situation zu bestimmen. Gehen Sie dazu wie folgt vor:

  1. Wählen Sie Neuer Schritt und dann Bedingung hinzufügen aus.

  2. Wählen Sie unter dem linken Textfeld im Karte Bedingungdie Option Dynamischen Inhalt hinzufügen aus.

    Hinweis

    Die Auflistung, die die Liste aller elemente enthält, die von Get items zurückgegeben werden, wird als Wert benannt. Stellen Sie sicher, dass Sie den Wert unter Elemente abrufen auswählen (nicht aus dem Trigger, wenn ein vorhandenes Element geändert wird).

    Screenshot: Eine Wertsammlung ist unter Elemente abrufen beim Hinzufügen einer Bedingung aufgeführt.

  3. Wählen Sie im Karte Bedingung im Feld Beziehung die Option Ist gleich aus, und geben Sie dann 0 in das Feld Wert ein.

  4. Fügen Sie die length-Funktion im erweiterten Modus hinzu. Dies ist wichtig, da der dynamische Wertinhalt die Liste der Elemente zurückgibt. Sie müssen bestimmen, ob die Länge der Liste (nicht der Wert) gleich 0 (null) ist.

  5. Geben Sie im erweiterten Modus length() um den Textkörper ('Get_items')?[' value'] ausdruck. Ihre Bedingung sieht wie folgt aus.

    Screenshot des Felds

Erstellen des Elements

Im Branch WENN JA fügen Sie einen SharePoint-Schritt Element erstellen hinzu.

Wählen Sie die Website und die Liste aus, die Sie in den Schritten Elemente abrufen verwendet haben. Unter Element erstellen sollten Sie jede Spalte nur mithilfe von Feldern aus dem Trigger auffüllen. Sie sollten keine Daten aus den Schritten Elemente abrufen verwenden, da diese aus der Zielliste und nicht aus der Quellliste stammen. Elemente abrufen wird oberhalb des Triggers angezeigt. Stellen Sie sicher, dass Sie nach unten scrollen, um es zu finden.

Aktualisieren des Elements

Im Branch IF NO fügen Sie einen SharePoint-Updateelementschritt hinzu.

Wählen Sie die Website und die Liste aus. Wählen Sie dann die ID aus, die in den Schritten Elemente abrufen zurückgegeben wird.

Screenshot: Auswählen der ID, die in den Schritten zum Abrufen von Elementen zurückgegeben wird

Wenn Sie die ID hinzufügen, wird automatisch ein Auf jeden Container anwenden um den Schritt Element aktualisieren hinzugefügt. Dieses Verhalten ist normal und beabsichtigt. Wenn die Abfrage, die Sie im Schritt Elemente abrufen verwendet haben, korrekt ist, aktualisiert der Container nur das Element, das Sie kopieren möchten. Nachdem Sie die verbleibenden Felder ausgefüllt haben (und sicherstellen, dass Sie die Ausgaben des Triggers und nicht aus dem Aufruf zum Abrufen von Elementen verwenden), sollte der Bedingungsblock dem folgenden Screenshot ähneln.

Screenshot: Beispiel für den Bedingungsblock

Einschränkungen des Flussprozesses

Der Flussprozess ermöglicht es, änderungen, die in der ersten Liste vorgenommen werden, in der zweiten Liste widerzuspiegeln.

Für den Prozess gelten die folgenden Einschränkungen:

  • Wenn Elemente aus der ersten Liste gelöscht werden, werden die Elemente nicht aus der zweiten Liste gelöscht. Dies liegt daran, dass es keinen Trigger für Beim Löschen eines Elements gibt. In diesem Fall gibt es keine Möglichkeit, dass ein Flow benachrichtigt wird, wenn ein Löschvorgang erfolgt. Stattdessen wird empfohlen, eine Spalte hinzuzufügen, um anzugeben, dass das Element nicht mehr benötigt oder relevant ist, anstatt Elemente aus SharePoint-Listen (oder SQL-Tabellen oder einer anderen Datenquelle) zu löschen. Diese Spalte wird zwischen den beiden Listen synchronisiert.
  • Wenn Änderungen an dem Feld vorgenommen werden, das Sie verwenden, um Elemente zwischen den beiden Listen synchron zu halten, wird ein neues Element in der Zielliste erstellt. Wenn Sie z. B. die Spalte Name einer Person verwenden, um zwischen den beiden Listen zu kopieren, und sich die Name-Spalte dieser Person ändert, betrachtet der Flow diese Änderung als neues Element, nicht als Aktualisierung eines vorhandenen Elements. Wenn Sie garantieren können, dass sich die Spalte Name nie ändert, sind Sie von dieser Einschränkung nicht betroffen. Wenn sich die Spalte Name jedoch ändert, müssen Sie der Zielliste eine Spalte hinzufügen, in der die ID des Elements in der ersten Liste gespeichert ist. In diesem Fall können Sie anstelle von Name nach Elementen die ID verwenden. (Die ID ist garantiert immer eindeutig.)
  • Dieser Prozess ist keine bidirektionale Synchronisierung. Das bedeutet, dass die Änderungen nicht in der Quellliste angezeigt werden, wenn Elemente in der Zielliste aktualisiert werden. Sie sollten nicht versuchen, die bidirektionale Synchronisierung im Flow einzurichten, da dadurch eine Endlosschleife ohne zusätzliche Änderungen erstellt wird. Beispielsweise aktualisiert Liste A Liste B, Liste B aktualisiert Liste A, Liste A wird Liste B erneut aktualisiert usw.