Udostępnij za pośrednictwem


Jak używać usługi Flow do kopiowania elementów między dwoma źródłami danych

W tym artykule opisano sposób efektywnego kopiowania elementów między dwoma źródłami danych przy użyciu usługi Microsoft Flow.

Na przykład możesz utworzyć przepływ, aby skopiować wszystkie elementy z listy programu SharePoint w jednej witrynie do drugiej witryny programu SharePoint. Proces przepływu działa również między listą programu SharePoint a tabelą SQL lub dowolną z ponad 100 usług obsługiwanych przez usługę Flow.

Dotyczy: Power Automate
Oryginalny numer KB: 4467880

Więcej informacji

Musisz wypełnić wszystkie wymagane kolumny. Nie ma wymogu, aby nazwy wszystkich kolumn w dwóch źródłach danych były takie same, ale musi istnieć co najmniej jedna kolumna (wybrana przez użytkownika), która będzie mogła jednoznacznie identyfikować elementy między dwoma źródłami danych.

W poniższym przykładzie założono, że kolumna Tytuł jest taka sama w obu źródłach.

Konfigurowanie wyzwalacza

Pierwszym krokiem jest skonfigurowanie wyzwalacza na źródłowej liście programu SharePoint. Ponieważ chcesz przechwycić wszystkie zmiany elementów (nie tylko nowe elementy), należy wybrać wyzwalacz SharePoint — po zmodyfikowaniu istniejącego elementu .

Zrzut ekranu przedstawiający wybranie wyzwalacza Po zmodyfikowaniu istniejącego elementu w programie Sharepoint.

Uwaga

Chociaż nazwa wyzwalacza wymienia tylko modyfikacje istniejących elementów, wyzwalacz reaguje również na nowe elementy dodane do listy.

Znajdowanie elementu w miejscu docelowym

Wyszukaj element na liście docelowej, aby uzyskać jego identyfikator i zaktualizować go. Mimo że usługa Flow ma akcję Filtrowanie , nie należy używać tej akcji w tym scenariuszu, ponieważ ta akcja pobiera wszystkie elementy listy z programu SharePoint. Proces będzie powolny, wykorzysta limit przydziału i nie będzie działać, jeśli lista zawiera więcej niż 256 elementów.

Zamiast tego należy użyć pola Zapytanie filtru w kroku Pobierz elementy w programie SharePoint. Dodaj akcję Pobierz elementy , a następnie wybierz pozycję Pokaż opcje zaawansowane , aby wyświetlić wszystkie pola. Jeśli pasujesz do tytułów wierszy listy źródłowej, wpisz następujące polecenie w polu Zapytanie filtru (upewnij się, że dodano pojedyncze znaki cudzysłowu):

Tytuł eq "[wybierz tytuł z zawartości dynamicznej]"

Zrzut ekranu przedstawiający wpisywanie tytułu w polu Zapytanie filtru w kroku Pobierz elementy.

Nie musisz mieć ścisłego mapowania kolumn 1:1 między dwoma źródłami danych. Jeśli na przykład na liście źródłowej znajdują się kolumny Imię i Nazwisko oraz kolumna Imię i nazwisko na liście docelowej, możesz wpisać wartość FullName eq "[Imię] [Nazwisko]" w polu Nazwa listy .

Dodawanie warunku w celu sprawdzenia, czy element istnieje

Po pobraniu elementów z listy docelowej jedna z następujących sytuacji będzie prawdziwa:

  • Element jeszcze nie istnieje w miejscu docelowym, więc musisz go utworzyć.
  • Element już istnieje w miejscu docelowym i musisz go zaktualizować.

Użyj warunku, aby określić rzeczywistą sytuację. Aby to zrobić, wykonaj następujące kroki.

  1. Wybierz pozycję Nowy krok, a następnie wybierz pozycję Dodaj warunek.

  2. W lewym polu tekstowym na karcie Warunek wybierz pozycję Dodaj zawartość dynamiczną.

    Uwaga

    Kolekcja zawierająca listę wszystkich elementów zwracanych przez elementy Get ma nazwę value. Upewnij się, że wybrano wartość z pozycji Pobierz elementy (nie z wyzwalacza, jeśli istniejący element został zmieniony).

    Zrzut ekranu pokazuje, że kolekcja wartości znajduje się na liście Pobierz elementy podczas dodawania warunku.

  3. Na karcie Warunek wybierz pozycję jest równa w polu Relacja , a następnie wpisz 0 w polu Wartość .

  4. Dodaj funkcję length w trybie zaawansowanym. Jest to ważne, ponieważ zawartość wartości dynamicznej zwraca listę elementów. Musisz określić, czy długość listy (a nie wartość) jest równa 0 (zero).

  5. W trybie zaawansowanym wpisz length() wokół treści('Get_items')?[' value'] wyrażenie. Warunek jest wyświetlany w następujący sposób.

    Zrzut ekranu przedstawiający pole Warunek pokazuje długość listy równą 0.

Tworzenie elementu

W gałęzi JEŚLI TAK dodasz krok Utwórz element programu SharePoint.

Wybierz witrynę i listę użytą w krokach Pobieranie elementów . W obszarze Utwórz element należy wypełnić każdą kolumnę przy użyciu pól tylko z wyzwalacza. Nie należy używać żadnych danych z kroków Pobieranie elementów , ponieważ będą one pochodzić z listy docelowej, a nie z listy źródłowej. Elementy get pojawią się nad wyzwalaczem. Upewnij się, że przewiń do dołu, aby go znaleźć.

Aktualizowanie elementu

W gałęzi IF NO dodasz krok elementu aktualizacji programu SharePoint.

Wybierz witrynę i listę. Następnie wybierz identyfikator zwrócony z kroków Pobierz elementy .

Zrzut ekranu przedstawiający wybieranie identyfikatora zwróconego z kroków Pobieranie elementów.

Po dodaniu identyfikatora element Zastosuj do każdego kontenera jest automatycznie dodawany w kroku Aktualizuj element . Takie zachowanie jest oczekiwane. Jeśli zapytanie użyte w kroku Pobierz elementy jest dokładne, kontener zaktualizuje tylko element, który chcesz skopiować. Po ukończeniu pozostałych pól (i upewnij się, że używasz danych wyjściowych z wyzwalacza, a nie wywołania Pobierz elementy ), blok warunku powinien wyglądać podobnie do poniższego zrzutu ekranu.

Zrzut ekranu przedstawia przykład bloku warunków.

Ograniczenia procesu przepływu

Proces przepływu umożliwia uwzględnienie zmian wprowadzonych na pierwszej liście na drugiej liście.

Do procesu mają zastosowanie następujące ograniczenia:

  • Jeśli elementy zostaną usunięte z pierwszej listy, elementy nie zostaną usunięte z drugiej listy. Dzieje się tak, ponieważ nie ma wyzwalacza po usunięciu elementu. W takim przypadku nie ma możliwości powiadomienia przepływu w przypadku usunięcia. Zamiast tego zalecamy dodanie kolumny wskazującej, że element nie jest już potrzebny ani istotny, zamiast usuwać elementy z list programu SharePoint (lub tabel SQL lub innego źródła danych). Ta kolumna zostanie zsynchronizowana między dwiema listami.
  • Jeśli zostaną wprowadzone zmiany w polu używanym do utrzymywania synchronizacji elementów między dwiema listami, na liście docelowej zostanie utworzony nowy element. Jeśli na przykład użyjesz kolumny Nazwa osoby do skopiowania między dwiema listami, a kolumna Nazwa tej osoby zmieni się, przepływ uzna tę zmianę za nowy element, a nie aktualizację istniejącego elementu. Jeśli możesz zagwarantować, że kolumna Nazwa nigdy się nie zmieni, to ograniczenie nie wpłynie na Ciebie. Jeśli jednak kolumna Nazwa ulegnie zmianie, musisz dodać do listy docelowej kolumnę, która przechowuje identyfikator elementu na pierwszej liście. W takim przypadku zamiast używać nazwy do znajdowania elementów, możesz użyć identyfikatora. (Identyfikator ma gwarancję, że zawsze będzie unikatowy).
  • Ten proces nie jest synchronizacją dwukierunkową. Oznacza to, że jeśli elementy zostaną zaktualizowane na liście docelowej, zmiany nie zostaną odzwierciedlone na liście źródłowej. Nie należy próbować konfigurować dwukierunkowej synchronizacji w przepływie, ponieważ spowoduje to utworzenie nieskończonej pętli bez dodatkowych modyfikacji. Na przykład lista A zaktualizuje listę B, lista B zaktualizuje listę A, lista A ponownie zaktualizuje listę B itd.