본문 바로가기
기술자료 (KB)/Power Platform

Excel 파일 내보내기 및 업데이트 4 - SharePoint 확인 및 업데이트

by 이완주 2024. 12. 27.
 

Excel 파일 내보내기 및 업데이트 1 - 파일 내보내기

Power Apps 에서 원하는 데이터를 Excel로 내보내고 Excel 파일을 수정하고 업로드 하면 자동 업데이트가 되었으면 한다. [결과 화면] - 엑셀 파일 생성, 테이블 생성, 테이블에 값 추가 후 링크 생성하

leemcse.tistory.com

 

 

 

 

1. Excel 파일을 만든다. - 위의 링크에 나와 있는 확인

2. Excel 파일을 수정 한다.

3. 수정된 Excel 파일을 Power Auotmate를 이용하여 불러온다.

4. SharePoint 목록과 Excel 파일을 비교하여 3개의 컬렉션을 만든다.

   ( colSharePointDelete, colSharePointNew, colSharePointEdit )

5. SharePoint 목록을 업데이트 한다.

6. 새로고침으로 업데이트 확인을 한다.

 

1. Excel 파일을 만든다. - 위의 링크에 나와 있는 확인

2. Excel 파일을 수정 한다.

3. 수정된 Excel 파일을 Power Auotmate를 이용하여 불러온다.

 

Power Automate 전체 흐름

 

1) PowerApps에서 파일의 경로를 받아서 Path 변수에 값을 넣는다.

아래 Path에서 받는 값의 예제 이다.

/Shared Documents/General/JobtitleExportData/JobtitleData_2024-12-27 10_32_55.xlsx
'Dev-ExcelExportData'.Run(excelPath)

 

2) 테이블에 있는 행 나열

파일에 Path 값을 넣어 테일블에 있는 행 나열로 Excel 값을 불러온다.

 

3) PowerApps으로 응답으로 

Excel 테이블을 Join 함수로 가져와서 ,로 합치기 

Result  = join(outputs('테이블에_있는_행_나열')?['body/value'], ';')

 

현재 테이블의 갯수 확인

ResultSum  = length(body('테이블에_있는_행_나열')?['value'])

4. SharePoint 목록과 Excel 파일을 비교하여 3개의 컬렉션을 만든다.

   ( colSharePointDelete, colSharePointNew, colSharePointEdit )

// Spinner를 true 설정
UpdateContext({varSpinner:true});

// PowerAutomate에서 검색한 결과 값을 resultExcel을 지역 혹은 전역 변수로 선언 할 수 있다.
Set(resultExcel,'Dev-ExcelExportData'.Run(excelPath));

// excelArray 함수에 가지고온 값을 ; 으로 분리
Set(excelArray,Split(resultExcel.result,";"));

// 검색 결과가 0보다 크면
If(Value(resultExcel.resultsum)>0,

    // colExcelResult 초기화
    Clear(colExcelResult);

    // excelArray 만큼 반복 수행
    ForAll(excelArray,

        // colExcelResult 에 값 추가
        Collect(colExcelResult,
            {
                // 가져온 값을 ParseJSON으로 가져와 저장
                ID : Text(ParseJSON(ThisRecord.Value).ID),
                Title : Text(ParseJSON(ThisRecord.Value).직위),
                OrderNo : Value(ParseJSON(ThisRecord.Value).순서)
            }
        )
    )
);

// 3개의 컬렉션 만들기

// ID가 같지 않은 값을 확인하여 Delete 항목을 만든다.
ClearCollect(colSharePointDelete,ForAll(Jobtitle,If(IsBlank(LookUp(colExcelResult,Value(ID)=Jobtitle[@ID])),{ID:ID,Title:ThisRecord.제목,OrderNo:ThisRecord.OrderNo})));

// ID가 없는 값은 새로운 항목으로 만들어 진다.
ClearCollect(colSharePointNew,ForAll(colExcelResult,If(IsBlank(ID),{Title:ThisRecord.Title,OrderNo:ThisRecord.OrderNo})));

// ID가 같으면서 Title 혹은 OrderNo가 다른 항목을 만든다.
ClearCollect(colSharePointEdit,ForAll(Jobtitle,If(!IsBlank(LookUp(colExcelResult,Value(ID)=Jobtitle[@ID] And (Title<>Jobtitle[@Title] Or OrderNo<>Jobtitle[@OrderNo]))),{ID:ID,Title:ThisRecord.제목,OrderNo:ThisRecord.OrderNo})));

// Spinner를 false 설정
UpdateContext({varSpinner:false});

 

SharePoint와 Excel을 비교한 값으로 만든 결과

 

변경된 값을 가져오기 위해서는LookUp으로 확인

Text =  LookUp(colExcelResult,Value(ID)=ThisItem.ID,Title)

 

마찬가지로 OrderNo도 검색하여 가져오기

Text = LookUp(colExcelResult,Value(ID)=ThisItem.ID,OrderNo)

 

5. SharePoint 목록을 업데이트 한다.

// Delete 항목을 컬렉션 값을 JSON 형식으로 변수에 설정
Set(varSharePointDelete,JSON(colSharePointDelete));

// New 항목을 컬렉션 값을 JSON 형식으로 변수에 설정
Set(varSharePointNew,JSON(colSharePointNew));

// Edit 항목을 컬렉션으로 저장

// colSharePointEdit1 초기화
Clear(colSharePointEdit1);

// Edit 갤러리의 모든 값 만큼 수행
ForAll(gal_Edit.AllItems,

    // 컬렉션에 편집할 값 추가
    Collect(colSharePointEdit1,
        {
            ID : ThisRecord.ID,
            Title : NewTitle.Text,
            OrderNo : NewOrderNo.Text
        }
    )
);

// Edit 항목을 컬렉션 값을 JSON 형식으로 변수에 설정
Set(varSharePointEdit,JSON(colSharePointEdit1));

// Power Automate로 SharePoint 값 수정
'Dev-SharePointItem-NEW-EDIT-DELETE'.Run('varSharePointDelete','varSharePointNew','varSharePointEdit');

 

Power Automate 전체 흐름

 

1) Power Apps 에서 3개의 값을 입력 받아 각각 DeleteItems, NewItems, EditItems에 값을 저장

 

2) JSON 구문 분석 - Delete Items

삭제할 항목의 콘텐츠를 만들어 아래 값을 샘플에서 생성으로 만들어 스키마 만들기

[{"ID":1,"OrderNo":"10","Title":"대표"}]

 

3) 항목 삭제

각각에 적용 - Delete Items

 

4) JSON 구문 분석 - New Items

새롭게 만들 항목의 콘텐츠를 만들어 아래 값을 샘플에서 생성으로 만들어 스키마 만들기

[{"OrderNo":"11","Title":"전무"}]

 

5) 항목 만들기

새로운 항목 만큼 반복해서 만들기

 

6) 위의 방법으로 Edit 항목 업데이트 한다.

[{"ID":1,"OrderNo":"10","Title":"대표"}]

 

 

기존 업데이트 방법보다 Power Apps에서 결과를 보내는 방식이 훨씨 빠르게 적용되는 것을 확인

 

6. 새로고침으로 업데이트 확인을 한다.

Jobtitle 목록을 다시 불러온다.

단 업데이트에 약간이 소요 됨을 인지하고 새로고침 버튼을 클릭한다.

OnSelect = Refresh(Jobtitle);

 

 

[결과 화면]

 

 

댓글