2023. 5. 14. 09:36ㆍIT/Power Automate Desktop
안녕하세요.
쿠루가이입니다. 요즘 Power Automate Desktop(이하, PAD)를 공부하고 있는데요. 앞으로 자동화 예제를 하나씩 만들어서 설명을 드릴까 합니다. 오늘은 실시간으로 주식 데이터를 자동으로 가져오는 루틴을 작성해보도록 하겠습니다.

시나리오
시나리오는 현실 시나리오를 파악해서 PAD에서 어떻게 구현할지 먼저 생각해보겠습니다.
현실 시나리오
1. '주식투자.xlsx' 엑셀파일을 연다.
2. Edge를 열고 'https://finance.naver.com/'로 이동한다.
3. 각 종목을 입력해서 현재가를 확인한 후, D4:D11에 값을 입력한다.
4. 엑셀을 저장한다.
PAD 시나리오
1. '주식투자.xlsx' 엑셀파일을 연다.
2. 주식 종목코드값을 읽어서(C4:C11) codes라는 목록에 저장한다.
3. Edge를 열고 'https://finance.naver.com/'로 이동한다.
4. codes를 하나씩 열어서 'https://finance.naver.com/item/main.nhn?code='맨 뒤에 코드를 삽입한 URL로 이동한다.
5. 현재 종목의 현재가를 크롤링해서 values라는 목록에 저장한다.
6. values를 읽어서 D4:C11에 값을 저장한다.
7. 엑셀을 저장한다.
PAD로 구현하기
1. 작업 → Excel → Excel 시작을 Main 흐름에 끌어서 문서경로에 '주식투자.xlsx'의 경로를 입력하고 [저장]을 누릅니다.


2. 작업 → Excel → Excel 워크시트에서 읽기를 Main 흐름에 끌어서 놓고 아래와 같이 설정합니다.
- 검색 : 셀 범위의 값
- 시작열 : C, 시작행 : 4
- 끝 열 : C, 끝 행 : 11
- 변수 저장 : codes

3. 작업 → 브라우저 자동화 → 새 Microsoft Edge 시작를 Main 흐름으로 끌어서 놓고 아래와 같이 입력을 합니다.
- 이니셜 URL : https://finance.naver.com/

4. 작업 → 변수 → 새 목록 만들기를 Main 흐름에 끌고 와서 values라는 목록을 만듭니다. 여기에 해당 종목의 현재가를 저장할 것입니다.

5. 작업 → 반복 → 각각의 경우를 Main 흐름으로 끌고 와서 아래와 같이 입력을 합니다. '각각의 경우'라는 컴포넌트는 C#의 foreach문과 동일한 역할을 합니다. 즉, codes에 저장된 항목을 하나씩 꺼내서 CurrentItem에 값을 저장해주는 역할을 합니다.

실제로 codes에 들어가는 내용을 살펴보면 아까 C4:C11의 데이터가 들어가 있는것을 확인할 수 있습니다.

네이버 주식 사이트의 URL을 분석해보면, 'https://finance.naver.com/item/main.nhn?code=종목코드값' 이런 형식으로 페이지가 만들어져 있는것을 확인할 수 있습니다. 그래서 아까 저장한 codes의 값을 하나씩 꺼내서 코드값을 넣어주면 해당 페이지로 이동을 하게 됩니다. 설정하는 방법은 작업 → 브라우저 자동화 → 웹 페이지로 이동을 Main흐름의 codes Loop에 끌고 와서 다음과 같이 입력합니다.

이제 해당 종목의 웹페이지에서 현재가를 추출해 보도록 하겠습니다. 작업 → 브라우저 자동화 → 웹 데이터 추출 → 웹 페이지에서 데이터 추출을 Main 흐름의 codes loop에 끌어다 놓고 다음과 같이 설정을 해줍니다.

그리고 타켓 브라우저를 열면 '라이브 웹 도우미' 대화상자가 표시되는데요. 타켓 브라우저에서 추출할 '현재가'를 마우스를 이동하여 우클릭 → 요소 값 추출 → 텍스트를 선택합니다. 이러면 추출한 값이 라이브 웹 도우미에 표시되는데 [완료] 버튼을 누릅니다.


이렇게 하면 텍스트 값이 string 형식으로 전달됩니다. 이 값은 데이터 테이블 형태로 DataFromWebPage에 저장됩니다.
엑셀에서 계산에 사용되므로 DataFromWebPage[0] 값을 숫자로 변경해줍니다. 작업 → 텍스트 → 텍스트를 숫자로 변환을 Main 흐름의 codes loop에 끌어다 놓고요. 변환할 텍스트를 DataFromWebPage[0] 로 지정해줍니다. 그러면 TextAsNumber라는 변수에 숫자형태로 저장이 됩니다.

변환된 숫자값을 values라는 목록에 하나씩 저장합니다. 작업 → 변수 → 목록에 항목 추가를 Main흐름의 codes loop에 끌어다 놓고 다음과 같이 설정합니다.

6. 이제 브라우저에서 할 일은 다 했기 때문에 브라우저를 닫아줍니다. 작업 → 브라우저 자동화 → 웹 브라우저 닫기를 Main 흐름에 넣습니다.
7. 이제 values의 값을 하나씩 읽어서 엑셀 D4:D11에 값을 저장하도록 하겠습니다.
먼저 D4부터 값이 밑으로 추가되어야 하는데요. 이때 위치를 나타내는 변수 row를 선언해줍니다. 초기값은 0으로 합니다. 작업 → 변수 → 변수 설정을 Main 흐름에 끌어 놓습니다.

작업 → 반복 → 각각의 경우를 Main 흐름에 끌고와서 반복할 값을 values로 지정합니다.

작업 → Excel → Excel 워크시트에 쓰기를 Main 흐름에 끌고 와서 엑셀 위치를 지정해줍니다. 엑셀이 D열 4행 부터 시작하니까 +4 해준것입니다.

그리고 작업 → 변수 → 변수 증가를 Main 흐름에 끌어다 놓고 반복 될때마다 1씩 증가하도록 설정합니다.

8. 마지막으로 문서를 저장하고 닫습니다. 작업 → Excel → Excel 닫기를 Main 흐름에 넣어서 다음과 같이 설정합니다.

완성된 흐름
PAD에서 구현한 전체 FLOW는 다음과 같습니다.

흐름 실행하기
자 이제! 이때까지 작성한 흐름을 실행해보도록 하겠습니다. 아래 영상을 참고해주세요.
'IT > Power Automate Desktop' 카테고리의 다른 글
[Power Automate] 목록 값을 파이썬 코드로 넘기는 방법 (1) | 2023.10.19 |
---|---|
[Power Automate] 특정 셀을 다른 시트에 값을 붙여넣기 (1) | 2023.05.22 |
[Power Automate] 데이터 형식에 따라 엑셀에 값 넣는 방법 (0) | 2023.05.21 |