ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [UiPath] 특정폴더 위치에 파일명을 구분하여 처리하는 예제
    UiPath RPA/Tips 2021. 5. 6. 19:28
    반응형

    UiPath 포럼에 아래와 같은 문의가 있었습니다.

     

    forum.uipath.com/t/topic/312737/3

     

    초보입니다.. 어떤 액티비티를 사용해야 하는지 질문 드립니다

    안녕하세요! 폴더내에 누적됩니다~!

    forum.uipath.com

    특정 폴더에 누적되는 파일의 이름에 지역이 포함된 단어에 따라 해당 담당자에게 메일을 발송하는 작업을 수행해야 합니다. 단어에 따라 발송담당자를 정해야 하니 IF 액티비티와 파일이 여러개 존재하므로 반복작업을 위해 For each 액티비티를 사용해야 할텐데 파일정보를 어떻게 가져와야하는지는 상당히 난감해 하실 수 있으실 겁니다.

     

    이 부분은 .NET의 coding으로 처리해야 합니다.

     

    지금부터 차근차근 한 단계씩 확인해볼까요? 🧐

     

    1. 프로젝트 생성 및 Sequence 액티비티에 directory 변수선언

    프로젝트를 생성한 후, Main.xaml에 Sequence 액티비티를 생성합니다. 그리고 변수 생성영역에 변수를 "directory" 라는 이름의 변수를 생성합니다.

    * 꼭 directory로 생성해야할 필요는 없습니다. 내부 관리 규칙에 따라 변수명을 지정하셔도 됩니다. 🤗

     

    directory 변수생성

    해당 변수가 특정 위치(=폴더)의 파일정보를 가져오기위한 폴더정보 변수가 될 것입니다. 기본으로 표시되는 변수 유형에선 폴더 정보를 가져올 수 있는 기능을 가진 유형이 없으므로 "형식 찾아보기"를 선택해야 합니다.

     

    2. 형식 선택 및 기본값 설정

    이름 입력란에서 "directory"를 입력하신 후, "System.IO" 네임스페이스에 선언된 "DirectoryInfo"를 찾아 선택하세요.

    DirectoryInfo 유형 선택

    선택 후, 기본값 영역에서 New DirectoryInfo를 입력하여 변수를 생성해주세요. 생성시 입력받는 파라메터에는 파일을 검색할 폴더의 절대경로를 입력해주세요. 예시에선 "C:\Files" 로, C 드라이브 바로 밑에 위치한 Files 라는 폴더에서 파일을 찾도록 설정할 것입니다.

    변수 기본값 초기화 설정

     

    3. For each 액티비티 추가

    Sequence 액티비티 안에 For Each 액티비티를 추가하고, in 다음 칸에 "directory.GetFiles()"를 입력해주세요. directory.GetFiles() 함수는 경로 내 보관된 모든 파일정보 객체를 배열(Array)형식으로 반환하는 함수입니다.

    For Each 액티비티 추가

    GetFiles() 함수를 통해 받은 파일정보객체는 For Each 액티비티를 통해 "item" 변수에 개별적으로 반복 대입됩니다. 예를 들어, 파일이 3개가 존재한다면, 각 파일정보가 item 변수에 3번 대입되며, 1회 대입 될 때마다 "본문"이라는 이름을 가진 Sequence 액티비티 내 작업들이 동작하게 됩니다.

     

    그러나 이 작업만으로 item에 파일정보를 제대로 담을 순 없습니다. 바로 다음 단계를 통해 제대로 파일정보를 담을 수 있도록 처리해야 합니다.

     

    4. item 변수에 파일정보객체가 제대로 담길 수 있도록 For each 액티비티 속성처리

    For Each 액티비티의 속성 창에서 "TypeArgument" 설정이 필요합니다. 아래 스크린샷과 같이 형식 찾아보기를 선택하세요.

    item에 대한 변수유형 설정작업

    선택하면, directory 변수유형 선택때와 동일한 창이 표시됩니다. "FileInfo"을 검색한 후, System.IO 네임스페이스에 위치한 유형 "FileInfo"를 선택해주세요.

    FileInfo 유형 선택

     

    5. If 액티비티 추가

    각 분기별 작업을 위해 If 액티비티를 추가해주세요.

    Condition 영역에 파일명에 포함된 단어에 따라 작업을 진행할 수 있도록 조건식을 작성해야 합니다. 포럼에 올라온 내용은 파일명에 서울, 대전, 대구, 부산 이란 단어 포함여부에 따라 각기 다른 담당자에게 메일을 발송하는 것입니다.

     

    따라서 조건식을 아래와 같이 작성합니다.

    item.Name.Contains("서울")

    Contains 함수는 문자열(string) 형식의 입력 받은 단어(예 : 서울)가 포함되어있는지 여부를 확인하는 .NET 기본 함수입니다. 만약 단어가 반드시 제목 시작지점(예 : "서울_작업파일1.xlsx")에 위치한다면, StartWith 함수를 사용해도 됩니다.

    item.Name.StartsWith("서울")

    조건을 적용한 모습

     

     

    If 액티비티는 조건이 참이면, Then에 위치한 액티비티, 아니면 Else에 위치한 액티비티가 수행됩니다. 따라서 Then 영역에 메일 발송 액티비티를 배치해야 합니다.

     

    6. 메일발송 액티비티 추가

    메일발송을 위해 메일 발송 액티비티를 찾아 Then 영역에 배치해 주세요. 예제에서는 Outlook이 설치되어 있다는 가정하에 "Send Outlook Mail Message" 액티비티를 선택합니다. 만약 UiPath 기능으로 사용할 수 있는 다른 메일 프로그램이 있다면 관련 액티비티를, 없다면 "Send STMP Mail Message" 액티비티를 선택해주세요.

    * SMTP를 통한 메일발송 설정 관련은 ddochea.tistory.com/65를 참조해주세요.

     

    메일발송 액티비티 선택
    메일 발송 액티비티 설정(Outlook)

    메일 발송 액티비티에서 "파일 첨부"를 선택하여 인수를 설정해주세요.

    파일 첨부 인수설정

    인수설정값에 item.FullName은 파일의 전체경로명을 의미하며, 해당 경로를 설정해주면 액티비티에서 경로에 위치한 파일을 첨부하여 메일을 발송하게 됩니다.

     

    7. 다른 조건을 위해 작업설정

    "서울"조건에 대한 작업은 완료했습니다. 나머지 작업을 위해 만들었던 IF 액티비티를 복사하여 배치하세요. 해당 포스트에선 "서울","부산" 2개의 예시만 들도록 하겠습니다.

     

    만약, 파일명이 "서울_부산_담당자.xlsx" 와 같이 중복되며, 두 담당자 모두에게 발송이 필요하다면 아래 스크린샷과 같이 IF 액티비티를 배치하세요.

    서울조건 IF 액티비티 아래에 배치한 부산조건 IF 액티비티

    만약 서울과 부산 모두 포함되어 있으면, 서울에만 발송, 아니면 부산에 발송하게끔 처리하고 싶다면 아래 스크린샷과 같이 IF 액티비티를 배치하세요. 

    서울조건 IF 액티비티의 Else 영역 안쪽에 배치한 부산조건 IF액티비티

    이것으로 폴더내 파일명에 따라 분기작업을 수행하는 예시를 모두 마쳤습니다. 최적화와는 거리가 먼 예제이지만 이해하는덴 어렵지 않을 것 입니다.

    도움이 되셨길 바랍니다. 😍

    반응형

    댓글

Designed by Tistory.