Excel 파일 내보내기 및 업데이트 4 - SharePoint 확인 및 업데이트
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);
|
[결과 화면]
![]() |