Flow를 사용하여 두 데이터 원본 간에 항목을 복사하는 방법
이 문서에서는 Microsoft Flow를 사용하여 두 데이터 원본 간에 항목을 효율적으로 복사하는 방법을 설명합니다.
예를 들어 흐름을 빌드하여 한 사이트의 SharePoint 목록에서 두 번째 SharePoint 사이트로 모든 항목을 복사할 수 있습니다. 흐름 프로세스는 SharePoint 목록과 SQL 테이블 또는 Flow에서 지원하는 100개 이상의 서비스 간에도 작동합니다.
적용 대상: Power Automate
원본 KB 번호: 4467880
추가 정보
필요한 모든 열을 채워야 합니다. 두 데이터 원본에 있는 모든 열의 이름이 동일해야 한다는 요구 사항은 없지만 두 데이터 원본 간에 항목을 고유하게 식별할 수 있는 열이 하나 이상 있어야 합니다.
다음 예제에서는 타이틀 열이 두 원본 모두에서 동일하다고 가정합니다.
트리거 설정
첫 번째 단계는 원본 SharePoint 목록에서 트리거를 설정하는 것입니다. 모든 항목 변경 내용(새 항목뿐만 아니라)을 캡처하려면 SharePoint - 기존 항목이 수정된 경우 트리거를 선택해야 합니다.
참고
트리거 이름은 기존 항목에 대한 수정 사항만 언급하지만 트리거는 목록에 추가된 새 항목에도 반응합니다.
대상에서 항목 찾기
대상 목록에서 항목을 검색하여 ID를 가져오고 업데이트합니다. Flow에는 필터 작업이 있지만 이 작업은 SharePoint에서 모든 목록 항목을 다운로드하기 때문에 이 시나리오에서 해당 작업을 사용하면 안 됩니다. 프로세스가 느리고, 할당량을 사용하며, 목록에 256개 이상의 항목이 있는 경우 작동하지 않습니다.
대신 SharePoint의 항목 가져오기 단계에서 쿼리 필터링 필드를 사용해야 합니다. 항목 가져오기 작업을 추가한 다음 고급 옵션 표시를 선택하여 모든 필드를 표시합니다. 원본 목록의 행 제목과 일치하는 경우 쿼리 필터링 필드에 다음을 입력합니다(작은따옴표를 포함해야 합니다).
제목 eq '[동적 콘텐츠에서 제목 선택]'
두 데이터 원본 간에 엄격한 1:1 열 매핑이 필요하지는 않습니다. 예를 들어 원본 목록에 이름 및 성 열이 있고 대상 목록에 전체 이름 열이 있는 경우 목록 이름 필드에FullName eq '[First name] [Last name]'을 입력할 수 있습니다.
항목이 있는지 여부를 검사 조건 추가
대상 목록에서 항목을 가져오는 경우 다음 상황 중 하나가 true가 됩니다.
- 항목이 아직 대상에 없으므로 만들어야 합니다.
- 항목이 대상에 이미 있으며 업데이트해야 합니다.
조건을 사용하여 실제 상황을 확인합니다. 이렇게 하려면 다음과 같이 하십시오.
새 단계를 선택한 다음 조건 추가를 선택합니다.
조건 카드 왼쪽 텍스트 상자에서 동적 콘텐츠 추가를 선택합니다.
참고
Get 항목에서 반환된 모든 항목 목록을 포함하는 컬렉션의 이름은 값입니다. 항목 가져오기에서 값을 선택해야 합니다(기존 항목이 변경된 경우 트리거에서 선택하지 않음).
조건 카드 관계 상자에서 를 선택하고 값 상자에 0을 입력합니다.
고급 모드에서 길이 함수를 추가합니다. 동적 값 콘텐츠가 항목 목록을 반환하기 때문에 이는 중요합니다. 목록의 길이(값이 아님)가 0(0)과 같은지 확인해야 합니다.
고급 모드에서 본문 주위에 length()를 입력합니다 ('Get_items')?[' value'] 식입니다. 조건은 다음과 같이 표시됩니다.
항목 만들기
IF YES 분기에서 SharePoint 항목 만들기 단계를 추가합니다.
항목 가져오기 단계에서 사용한 사이트 및 목록을 선택합니다. 항목 만들기에서 트리거의 필드만 사용하여 각 열을 채워야 합니다. 원본 목록이 아닌 대상 목록에서 제공되므로 항목 가져오기 단계의 데이터를 사용하면 안 됩니다. 가져오기 항목 이 트리거 위에 표시됩니다. 아래쪽으로 스크롤하여 찾을 수 있는지 확인합니다.
항목 업데이트
IF NO 분기에서 SharePoint 업데이트 항목 단계를 추가합니다.
사이트 및 목록을 선택합니다. 그런 다음 항목 가져오기 단계에서 반환되는 ID를 선택합니다.
ID를 추가하면 업데이트 항목 단계 주위에 각 컨테이너에 적용이 자동으로 추가됩니다. 이것은 예상된 동작입니다. 항목 가져오기 단계에서 사용한 쿼리가 정확한 경우 컨테이너는 복사하려는 항목만 업데이트합니다. 나머지 필드를 완료하고 항목 가져오기 호출이 아닌 트리거의 출력을 사용하는지 확인한 후 조건 블록은 다음 스크린샷과 유사해야 합니다.
흐름 프로세스의 제한 사항
흐름 프로세스를 사용하면 첫 번째 목록에서 수행된 변경 내용을 두 번째 목록에 반영할 수 있습니다.
프로세스에는 다음과 같은 제한 사항이 적용됩니다.
- 항목이 첫 번째 목록에서 삭제되면 두 번째 목록에서 항목이 삭제되지 않습니다. 항목이 삭제되는 경우 트리거가 없기 때문 입니다. 이 경우 삭제가 발생할 때 흐름에 알림을 받을 방법이 없습니다. 대신 SharePoint 목록(또는 SQL 테이블 또는 기타 데이터 원본)에서 항목을 삭제하는 대신 항목이 더 이상 필요하거나 관련이 없음을 나타내는 열을 추가하는 것이 좋습니다. 이 열은 두 목록 간에 동기화됩니다.
- 두 목록 간에 항목을 동기화 상태로 유지하기 위해 사용 중인 필드를 변경하면 대상 목록에 새 항목이 만들어집니다. 예를 들어 사용자의 이름 열을 사용하여 두 목록 간에 복사하고 해당 사용자의 이름 열이 변경되는 경우 흐름은 해당 변경 내용을 기존 항목에 대한 업데이트가 아닌 새 항목으로 간주합니다. Name 열이 변경되지 않도록 보장할 수 있는 경우 이 제한의 영향을 받지 않습니다. 그러나 이름 열이 변경되는 경우 대상 목록에 항목의 ID를 저장하는 열을 첫 번째 목록에 추가해야 합니다. 이 경우 이름을 사용하여 항목을 찾는 대신 ID를 사용할 수 있습니다. (ID는 항상 고유하도록 보장됩니다).
- 이 프로세스는 양방향 동기화가 아닙니다. 즉, 항목이 대상 목록에서 업데이트되면 변경 내용이 원본 목록에 반영되지 않습니다. 추가 수정 없이 무한 루프를 만들므로 흐름에서 양방향 동기화를 설정하려고 하면 안 됩니다. 예를 들어 목록 A가 목록 B를 업데이트하고, 목록 B가 목록 A를 업데이트하고, A가 목록 B를 다시 업데이트하는 등의 작업을 나열합니다.