🚀 추가학습: 구축한 DB를 회사 시스템에 연결해보자!
이제까지는 SharePoint List를 이용해 차량 예약 시스템을 구축하고 관리하는 방식으로 진행했어요. 하지만 대부분의 회사는 이미 자체 데이터베이스(DB)나 시스템을 보유하고 있죠.
그래서 이번에는 Power Automate Desktop (PAD)을 활용해, 구축한 SharePoint List의 예약 목록을 회사의 시스템과 연동하는 방법을 알아볼게요! 🎯
🔗 Objective
이번 학습에서는 사내 웹사이트의 시스템과 차량 예약 목록을 연동하는 시나리오를 진행해볼 거예요.
즉, SharePoint List의 데이터를 기존 웹 환경과 연결하는 프로젝트를 구현할 예정이에요.
💡 실습 환경
- 실제 사내 웹사이트가 없으니 Viva Engage를 예시로 사용할게요.
- 여러분의 사내 시스템이 있다면 해당 환경을 대입해서 생각해보면 좋을 것 같아요!
🛠️ 사전작업
🎟️ 필요한 라이선스
이 작업을 진행하려면 Power Automate Premium 라이선스가 필요해요.
무료 라이선스로는 일부 기능을 사용할 수 없으니, 라이선스를 확인해주세요!
📥 Power Automate Desktop 다운로드하기
PAD를 사용하려면 프로그램을 다운로드해야 해요.
- Power Automate 공식 홈페이지에 접속
- “My Flows” 탭으로 이동
- “Install” 버튼 클릭 후 다운로드 진행(아래화면 참고)
📌 설치 후 실행하기
- 다운로드한 실행 파일을 실행하고 지시에 따라 설치를 완료해주세요.
- 첫 실행 시, 개발 환경을 등록하는 창이 뜨는데 기존 작업 환경을 선택하면 됩니다!
🏗️ Desktop Flow 만들기
Power Automate Desktop이 설치되었으면, 이제 Desktop Flow를 만들어볼게요!
- Power Automate Desktop 실행
- “Flows” 탭으로 이동
- “New Flow” 버튼 클릭
- 적절한 이름을 입력한 후 생성
💡 Viva Engage란?
🌐 Viva Engage 소개
Viva Engage는 사내 SNS와 비슷한 기능을 하는 플랫폼이에요.
우리가 만든 예약 시스템을 이 웹사이트와 연동할 예정이에요!
📌 목표:
- 새로운 예약이 발생하면 Viva Engage에 자동으로 글을 올리기!
- 이렇게 하면 사내 직원들이 예약 정보를 쉽게 확인할 수 있어요.
🔄 Flow 로직 설계하기
우리가 구현할 로직은 다음과 같아요!
단계 | 설명 |
---|---|
1️⃣ | Windows 작업 스케줄러를 이용해 한 시간마다 Desktop Flow 실행 |
2️⃣ | Desktop Flow가 SharePoint의 reserved_list 에서 최근 30분 내 생성된 예약을 가져옴 |
3️⃣ | Power Automate Desktop을 이용해 예약 정보를 Viva Engage에 자동 업로드 |
💡 여기서 중요한 점!
- Windows 작업 스케줄러를 활용해 자동 실행
- 예약 목록이 30분 내 업데이트된 데이터만 가져오도록 설정
🏗️ Main Flow 설계하기
이제 실제 Main Flow를 설계해볼게요!
전체적인 로직은 아래와 같아요.
📝 Flow 상세 설명
1️⃣ 현재 시간 가져오기
Get current date and time
액션을 사용해 현재 시간을 변수에 저장
2️⃣ 30분 전 시간 계산
Add to datetime
액션을 이용해 30분을 빼서 기준 시간 설정
3️⃣ 예약 내역 불러오기
Get Items
액션을 사용해 SharePoint List에서 30분 내 업데이트된 예약을 가져옴
4️⃣ Viva Engage 웹사이트 열기
Launch new Microsoft Edge
액션으로 Viva Engage 사이트 실행
5️⃣ 예약 목록 업로드 (반복문 처리)
For Each
액션을 사용해 SharePoint에서 가져온 예약 목록을 Viva Engage에 하나씩 업로드
📌 이제 실제 구현을 진행해볼까요? 😊
1. Get Current Date and Time
우선 현재 시스템의 시간을 받아오는 것부터 시작할까요?
Power Automate Desktop으로 현재 시간을 받아와 CurrentDateTime
변수에 저장해봅시다.
저는 화면상 다 추가되어 있지만, 여러분의 Flow는 비어있을 거예요.
- 좌측 패널에서 “Get Current Date and Time”을 검색
- 검색된 모듈을 클릭하여 추가
추가된 모듈을 클릭하면 설정 화면이 나타납니다.
우리는 시스템 기준 현재 시간을 가져올 것이므로 다음과 같이 설정해주세요.
- Retrieve:
Current date and time
- Time Zone:
System Time Zone
✅ 이렇게 설정하면 CurrentDateTime
변수에 현재 시간이 저장됩니다!
2. Add to datetime
우리는 30분 내 업데이트된 예약 목록을 Viva Engage 시스템에 동기화할 계획이에요.
따라서, 불러온 현재 시간에서 30분을 빼줘야 합니다.
- 좌측 패널에서 “Add to DateTime”을 검색
- 모듈을 클릭하여 추가
이제 30분을 CurrentDateTime
에서 빼줄 차례입니다.
다음과 같이 설정해주세요.
- Datetime:
%CurrentDateTime%
- 입력란을 클릭하면 나타나는 파란색 다이나믹 컨텐츠 버튼을 사용해 선택
- Add:
-30
- 30분을 뺄 것이므로
-30
입력
- 30분을 뺄 것이므로
- Time Unit:
Minutes
- 분 단위로 설정
✅ 이렇게 하면 30분 전 시간이 ResultedDate
변수에 저장됩니다!
3. Get Items
이제 예약 데이터를 가져올 차례입니다.
해당 과정은 1강~6강에서 다뤘던 Power Automate의 “Get Items” 액션과 동일해요.
- 좌측 패널에서 “Get Items”을 검색하여 추가
- 추가한 후 설정창을 열고 다음과 같이 입력
- Site Address:
reserved_list
가 포함된 SharePoint 사이트 주소 입력 - List Name:
reserved_list
선택
✅ 이제 가져올 데이터를 필터링하기 위해 Filter Query 설정이 필요해요.
“Advanced” 옵션을 클릭해 Filter Query를 추가해주세요.
🔹 Filter Query 설정
우리가 원하는 데이터는 “30분 내 생성된 예약”이므로,
SharePoint의 Hidden Column인 Created
를 활용해서 필터링해야 합니다.
📌 Hidden Column이란?
- 유저가 직접 생성하지 않아도 기본적으로 제공되는 컬럼이에요.
Created
컬럼은 아이템이 생성된 시간을 저장하는 역할을 합니다.
필터링을 적용할 때 쿼리는 OData Query 형식을 따르므로 변수는 작은 따옴표('
)로 감싸줘야 합니다.
✅ Filter Query : Created gt ‘%ResultedDate%’
주의: 화면에는 테스트를 위해 lt로 적혀있지만, 실제로는 gt가 로직에 맞는 조건문입니다.
이렇게 설정하면
ResultedDate
보다 이후에 생성된 예약만 불러오게 됩니다!
4. Launch New Microsoft Edge
이제 불러온 예약 목록을 Viva Engage에 연동해봅시다!
- 좌측 패널에서 “Launch new Microsoft Edge”를 검색 후 추가
- 모듈을 클릭하여 설정창을 열고 다음과 같이 입력
🛠️ 설정값 입력
- Launch Mode:
Launch New Instance
- 새 창을 열 것이므로 이 옵션 선택
- Initial URL: Viva Engage 사이트 주소 입력
- 연동할 Viva Engage의 URL을 입력
- (해당 URL은 아래 화면을 참고)
- Window State:
Maximized
- ❗ 매우 중요!
- 창이 최대화되지 않으면 자동화가 원활하게 작동하지 않을 수 있음
- Target Desktop:
Local Computer
- 로컬 환경에서 동작시킬 것이므로 선택
설정을 완료한 후 “Save” 버튼을 눌러 저장해주세요!
✅ 이제 30분 내 생성된 예약 데이터를 Viva Engage에 자동으로 업로드할 준비 완료!
5. For Each
Viva Engage를 띄웠다면 이제 받아온 각 아이템들을 순회하면서 Viva Engage에 업로드해야 해요.
이를 위해 For Each 모듈을 사용하고, 그 안에 필요한 작업들을 배치하면 됩니다.
- 좌측 패널에서 “For Each”를 검색하여 추가
- For Each 내부에 데이터를 순회하며 실행할 모듈들을 배치
5-1. Click link on Web Page
Viva Engage 페이지를 보면 글을 입력하는 란이 있어요.
이 UI를 클릭해서 활성화한 후 글을 입력할 수 있으므로, 클릭 동작을 자동화해야 합니다.
- 좌측 패널에서 “Click link on Web Page”를 검색하여 For Each 내부에 추가
- 모듈을 클릭하면 아래와 같은 설정 화면이 나타납니다. 하나씩 진행해볼게요.
- Web browser instance: 앞에서 띄운 Edge 브라우저를 다이나믹 컨텐츠에서 선택 (예:
Browser2
) - Click Type:
Left Click
선택
- UI Element 설정
- 2번째 입력란을 클릭 → Add UI Element 클릭
- Edge 브라우저에서 대상 UI 선택
- Viva Engage에서 글 입력란을 정확히 선택해야 합니다.
- HTML 구조상 여러 레이어가 겹쳐 있으므로 올바른 입력 필드를 선택해야 해요.
⚠️ 주의: Power Automate Desktop이 Edge에서 UI를 인식하려면 Power Automate 확장 프로그램이 설치되어 있어야 합니다.
설치되지 않았다면 알림이 뜨니 꼭 설치해주세요!
✅ 설정을 완료하고 저장하면 클릭 자동화 완료!
5-2. Populate Text Field on Web Page
글 입력란을 클릭했다면 이제 실제로 텍스트를 입력할 차례예요!
-
좌측 패널에서 “Populate Text Field on Web Page”를 검색하여 추가
-
설정 과정은 Click Link 과정과 유사해요.
- Web browser instance: 앞서 사용한
Browser2
선택 - UI Element: Click Link 과정처럼 입력란 UI 선택
- Text: 입력할 내용을 설정
30분 내 예약 리스트
를 동기화할 것이므로, SharePoint에서 불러온 예약 정보를 Dynamic Content로 삽입- ’ ‘와
%%
로 감싸진 부분은 SharePoint에서 가져온 데이터 값
✅ 설정을 완료한 후 “Save” 버튼을 눌러 저장!
5-3. Click link on Web Page (Post 버튼 클릭)
이제 마지막으로 Viva Engage에서 Post 버튼을 눌러 글을 업로드해야 합니다.
- 좌측 패널에서 “Click link on Web Page”를 검색하여 For Each 마지막에 추가
- 설정값 입력
- Web browser instance: 이전과 동일한 브라우저 사용 (
Browser2
) - UI Element: 입력란 클릭 후 “Add UI Element”를 이용해 Post 버튼 선택
- Click Type:
Left Click
✅ 이제 모든 설정이 완료되었어요! 🎉
🛠️ 테스트
열심히 만들었으니 제대로 동작하는지 확인해봐야겠죠?
저는 모듈을 하나 추가할 때마다 테스트를 진행하지만, 전체 Flow 실행도 필수입니다!
✅ 테스트 방법
- 좌측 상단 “PLAY” 버튼을 클릭
- Flow가 정상적으로 동작하는지 확인
💡 테스트 결과
- 글이 정상적으로 Viva Engage에 업로드되면 성공!
- 만약 오류가 발생하면 로그를 확인하고 어떤 단계에서 문제 발생했는지 점검
-
오류는 고치면 되니 너무 당황하지마세요, 이번 파트에서는 UI Element를 선택하는 부분에서 오류가 날 확률이 높아요. 여러 component가 중첩되어있으니 잘 골라주세요.
🎯 결론
오늘은 SharePoint List의 아이템을 가져와 Power Automate Desktop을 이용해 웹사이트와 동기화하는 작업을 진행했어요!
✅ 오늘 학습한 내용
- Power Automate Desktop을 활용해 SharePoint 데이터를 불러오기
- Viva Engage 웹사이트에서 자동으로 글을 입력하고 업로드하기
- Power Automate Desktop의 UI 자동화 기능 활용하기
우리는 Viva Engage를 예시로 사용했지만,
이 방식은 어떤 시스템에도 적용할 수 있어요! 🚀
📅 다음 시간
오늘 만든 Flow는 일정 시간마다 자동 실행되어야 해요.
다음 시간에는 Windows 작업 스케줄러를 활용해 Flow를 주기적으로 실행하는 방법을 알아볼 거예요!