Freigeben über


Verwenden von Flow zum Kopieren von Elementen zwischen zwei Datenquellen

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

Sie können beispielsweise einen Fluss erstellen, um alle Elemente aus einer SharePoint-Liste auf einer Website auf eine zweite SharePoint-Website zu kopieren. Der Ablaufprozess 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 "Titel " 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 erfassen möchten (nicht nur neue Elemente), sollten Sie sharePoint auswählen – Wenn ein vorhandenes Element geändert wird.

Screenshot zum Auswählen des Triggers zum Ändern eines vorhandenen Elements in SharePoint.

Notiz

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 nach dem Element in der Zielliste, um die 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 Vorgang ist langsam, verwendet 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 einzelnen Anführungszeichen einfügen):

Title eq '[Select the title from dynamic content]'

Screenshot zum Eingeben des Titels im 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 eine Spalte "Vollständiger Name" in der Zielliste haben, können Sie "FullName eq " [Vorname] [Nachname]" im Feld "Listenname" eingeben.

Fügen Sie eine Bedingung hinzu, um zu überprüfen, ob das Element vorhanden ist.

Wenn Sie die Elemente aus der Zielliste abrufen, gilt eine der folgenden Situationen:

  • Das Element ist noch nicht im Ziel vorhanden, sodass Sie es erstellen müssen.
  • 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. Klicken Sie auf Neuer Schritt, und wählen Sie dann Bedingung hinzufügen aus.

  2. Wählen Sie unter dem linken Textfeld auf der Bedingungskarte "Dynamischen Inhalt hinzufügen" aus.

    Notiz

    Die Auflistung, die die Liste aller elemente enthält, die von "Elemente abrufen" zurückgegeben werden, ist der benannte Wert. Stellen Sie sicher, dass Sie den Wert aus "Elemente abrufen" auswählen (nicht aus dem Auslöser, wenn ein vorhandenes Element geändert wird).

    Screenshot zeigt, dass eine Wertauflistung beim Hinzufügen einer Bedingung in

  3. Wählen Sie auf der Bedingungskarte im Feld "Beziehung" den Wert "0" aus, und geben Sie dann "0" in das Feld "Wert" ein.

  4. Fügen Sie die Längenfunktion 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 länge() um den Textkörper ('Get_items')?[' value'] Ausdruck. Ihre Bedingung wird wie folgt angezeigt.

    Screenshot des Felds

Erstellen des Elements

In der IF YES-Verzweigung fügen Sie einen Schritt zum Erstellen eines SharePoint-Elements hinzu.

Wählen Sie die Website und Liste aus, die Sie in den Schritten zum Abrufen von Elementen verwendet haben. In "Element erstellen" sollten Sie jede Spalte mithilfe von Feldern aus dem Trigger auffüllen. Sie sollten keine Daten aus den Schritten zum Abrufen von Elementen verwenden, da dies aus der Zielliste stammen würde, nicht die Quellliste. Elemente abrufen werden oberhalb des Triggers angezeigt. Stellen Sie sicher, dass Sie nach unten scrollen, um sie zu finden.

Aktualisieren des Elements

In der IF NO-Verzweigung fügen Sie einen SharePoint Update-Elementschritt hinzu.

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

Screenshot, um die ID auszuwählen, die aus den Schritten

Wenn Sie die ID hinzufügen, wird automatisch ein "Für jeden Container übernehmen" um den Schritt " Element aktualisieren" hinzugefügt. Dieses Verhalten wird erwartet. 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 abgeschlossen haben (und sicherstellen, dass Sie die Ausgaben aus dem Trigger verwenden, nicht aus dem Aufruf der Elemente abrufen), sollte Ihr Bedingungsblock dem folgenden Screenshot ähneln.

Screenshot zeigt ein Beispiel für den Bedingungsblock.

Einschränkungen des Ablaufprozesses

Der Ablaufprozess ermöglicht Änderungen, die in der ersten Liste vorgenommen werden, in der zweiten Liste widerzuspiegeln.

Die folgenden Einschränkungen gelten für den Prozess:

  • Wenn Elemente aus der ersten Liste gelöscht werden, werden die Elemente nicht aus der zweiten Liste gelöscht. Dies liegt daran, dass kein Trigger für das Löschen eines Elements vorhanden ist. In diesem Fall gibt es keine Möglichkeit, dass ein Fluss benachrichtigt werden kann, wenn ein Löschvorgang auftritt. 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 am Feld vorgenommen werden, das Sie verwenden, um Elemente zwischen den beiden Listen synchron zu halten, wird in der Zielliste ein neues Element erstellt. Wenn Sie beispielsweise die Spalte "Name" einer Person verwenden, um zwischen den beiden Listen zu kopieren, und sich die Spalte "Name" dieser Person ändert, wird diese Änderung als neues Element und nicht als Aktualisierung eines vorhandenen Elements betrachtet. 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 " ändert, müssen Sie der Zielliste jedoch eine Spalte hinzufügen, in der die ID des Elements in der ersten Liste gespeichert wird. In diesem Fall können Sie anstelle von Name zum Suchen von Elementen die ID verwenden. (Die ID ist garantiert immer eindeutig).
  • Dieser Vorgang ist keine bidirektionale Synchronisierung. Das bedeutet, dass die Änderungen in der Quellliste nicht angezeigt werden, wenn Elemente in der Zielliste aktualisiert werden. Sie sollten nicht versuchen, die bidirektionale Synchronisierung im Fluss einzurichten, da dadurch eine endlose Schleife ohne zusätzliche Änderungen erstellt wird. Listen A aktualisiert z. B. die Liste B, liste B aktualisiert die Liste A, liste A aktualisiert die Liste B erneut usw.