이번 단계에서 목표하는 바는 아래와 같다.
Get Outlook Mail Messages
액티비티를 사용해 outlook에 접근한다.
필터 속성을 사용하여 원하는 메일에만 접근할 수 있다. 필터 속성에는 SQL을 이용할 수도 있다.(링크 참고 → https://cosmos-kr.tistory.com/101)
필터링된 메일들은CourseEmails
라는 변수에 담아둔다. 메일 별로 첨부파일을 각각 다운받아야하기 때문이다.중요한 점은, '읽지 않은 메시지만' 속성을 체크 해두어야 한다는 점이다. 왜냐하면 담당자는 매일 새로운 문서에 대해서만 작어해야하기 때문이다.
Log Message
몇 개의 메일이 반환되었는지 확인한다. 위에서 선언한 변수
CourseEmails
는 array 형태이고.Count
메서드로 요소 개수를 반환할 수 있다. 문자열로 출력해야 하므로.ToString
을 사용해주자"새로운 메일 " + CourseEmails.Count.ToString + "개가 들어왔습니다."
for each
반환된 메일마다 첨부파일을 다운받는다. 이를 위해
for each
액티비티를 사용했다. CourseEmails를 도는데, 개별 메일은 email이라는 변수로 접근이 가능하다. 그리고 반복문 안에는Save Attachment
액티비티를 넣었다. 첨부파일은 이 프로젝트가 저장되어있는 디렉토리에 'Invoices'라는 폴더에 저장한다.
해당 step 실행 결과 아래와 같이 4개의 엑셀 파일이 다운로드 되었다.
이번 단계에서 목표하는 바는 아래와 같다.
excel application scope
다른 여러 프로그래밍 언어와 같이 RPA에서도 파일을 열어 작업을 한 다음에는 저장 및 닫는 동작이 필요하다. 이런 동작들을 UIPath에서는 하나의 액티비티로 지원하고 있다.
'workbook'을 지정하는 속성에는 작업하고자 하는 파일 경로를 써준다.email.Attachments.Furst.Nmae
이 처음에는 이해가 잘 안됐는데, 이것이 의미하는 바는 아래와 같다.for문을 돌 때 하나의 이메일을 'eamil'이라는 변수로 받고 있으므로, 하나의 이메일에 대해
.Attachments
로 첨부파일에 접근한다. 그 후 첫 번째 파일의 이름을 반환한다.이렇게 하는 이유는 메일마다 첨부파일 이름이 다르고, 변수를 사용하는 이점을 최대화 하기 위함이다.
read cell
해당 액티비티를 사용하기 위해서는 아래와 같이 액티비티 필터에서 '클래식' 옵션을 켜주어야 한다.클라이언트 코드가 있는 시트와 셀에 접근해서 그 값을 읽는다. 읽어온 클라이언트 코드를 출려하려고
.ToString
메소드를 사용해보니 아래와 같은 에러가 발생했다.
데이터 타입이 맞지 않는다는 것인데, Double로 데이터타입을 바꿔달라는 이야기다.
변수 페널에서 ClientCode를 선택해 'Browse for Types ...'에서 System.Double을 선택해 바꿔준다.
click
셀을 읽어왔다면, 이제는 ACME에 직접 검색하듯 스텝 바이 스텝으로 지정해주면 된다. 원하는 버튼을 클릭하면 된다. 중요한 점은 원하는 지점을 선택하고 anchor를 지정할 수 있는데, 클릭의 정확도를 높이기 위해 참고하는 참조위치라고 보면 된다.
type into
원하는 위치에 원하는 텍스트를 넣는다.
click
과 마찬가지로 텍스트를 넣을 지점을 지정하고 anchor도 지정한다.
write cell
웹에서 가져온 할인 금액을 엑셀에 넣어준다.
read cell
과 마찬가지로 '클래식' 옵션이 켜져있어야 사용이 가능하다.
이번 단계에서 목표하는 바는 아래와 같다.
if
클라이언트마다 할인 금액이 다른데, 할인 금액이 없는 경우 'This client doesn't benefit from any discount'처럼 뜬다. 이 결과도 긁어오므로 엑셀에 업데이트 할 때도 이 문구가 들어간다. 그런데 이 문구가 그대로 들어갈 경우 나중에 최종 금액을 처리할 때 문제가 생길 수 있으므로 0원으로 대체해준다. 분기 조건은 가져온 텍스트에 '$'가 포함되어있는지이다.
'$'가 있으면 할인금액 그대로 들어가고, 없으면 '$0'이 대신 들어가게 된다.
Use Desktop Outlook App
엑셀 파일을 다 처리 했다면, 메일로 발송한다. 이번 실습은 연습이므로 받는 사람은 나다.
브라우저를 띄울 때 로딩이 다 되지 않았는데 클릭이나 텍스트 입력과 같은 동작을 수행하려고 하다보니 에러가 자꾸 발생했다. 그래서 딜레이를 클릭과 텍스트 입력 전후로 1초 가량 넣었는데, 그 때문인지 수행 속도가 매우 느렸다. 지금이야 명령이 몇 개 없어서 전체 수행 시간이 그리 길지 않았겠지만, 더 큰 프로젝트나 현업에 가면 문제가 될 것 같았다. 어떻게 하면 최적화 할 수 있을지 고민해 보아야 할 것 같다.
UIPath는 액티비티가 많아 잘만 활용하면 강력한 힘을 가질 것 같다. 그런데 좀 아쉬운 점은 모든 프로세스가 병렬로 들어가기 때문에 한 눈에 보기가 어렵다. 이래서 모듈화를 하는건가..?