728x90
반응형

1. 데이터 테이블 (이하 DT)

https://docs.microsoft.com/ko-kr/dotnet/api/system.data.datatable?view=net-5.0 

 

DataTable 클래스 (System.Data)

메모리 내 데이터의 한 테이블을 나타냅니다.Represents one table of in-memory data.

docs.microsoft.com

- 윈도우의 DataTable 클래스와 동일 (C#, .Net VBA)

- C# 형태의 DataTable 사용법은 위 링크의 MS 공식문서 참조

 


2. UiPath 기본 지원 엑티비티 (Studio 설치 시 바로 사용가능)

UiPath에서 기본적으로 지원해주는 기능

- 이미지의 기능을 다 사용하지는 않지만 다른 엑티비티와 조합해서 사용하면 빠르고 간편함.

 


3. 사용 예제

Q1) Table 1을 Table 2로 만들기

- Table 1

Column1  Column2  Column3
a b c
1 2 3

- Table 2

Column1 Check Column2  Column3 Sum
a Y b c abc
1 N 2 3 123

 

A1) 

전체 Sequance
Table 1
Table 2
is_flag
str_sum
Add Data Row 내부 조건
Table 2 결과 Write line

 

Q2) 엑셀에서 데이터테이블 받아오기

A2) 생략

 

Q3) Filter Data Table, Clear DataTable, Merge DataTable, Join Data Table

A3) 생략

 

 


4. 실전 예제

Q1) Row 수가 10만건(임의의 충분히 많은 수) 정도인 DT 중 특정 데이터를 필터링하여 가져오기

이름 나이 신장 몸무게 연락처 차량 소유 여부 취미
A 10 150 50 010-0000-0000 False 게임, 영화
...            
Z 100 160 60 011-9999-9999 True 음악, 영화

- 위 DT에 데이터가 랜덤하게 8만건이 엑셀 파일로 있다고 가정했을 때,

- 나이가 30세에서 70세 사이의 키 150이상인 자차를 소유한 사람들만 가져오기

- 취미가 영화이고 나이가 50세 미만인 사람들의 이름과 연락처만 가져오기

- 연락처가 010 으로 시작하지 않는 사람들만 가져오기

A1) Linq, filter 등 사용

 

Q2) 데이터 컬럼수가 100개 이상인 DT를 가져와 수정하기

1 ... 124
a1 ... a124
b1 ... b124

- 위 DT의 값 중 컬럼명이 소수인 데이터만 가져오기

- 컬럼 명이 짝수인 값을 가져와서 중간에 Flag(값은 상관없음) 넣기

A2) Linq, filter 등 사용

 

Q3) Row 수가 변할 수 있는 DT 가져오기

 - 1회차 실행 : Row Count = 102

 - 2회차 실행 : Row Count = 95

 - 3회차 실행 : Row Count = 135

 - ... 

 - n회차 실행 : Row Count = 73

A3)

 

Q4) 입력 받은 DT의 컬럼 순서 바꾸기

- input

1 2 3 4
a b c d

-output

1 3 4 2
a c d b

A4) VBA, filter 활용

 

 


5. 응용

Q1) 원하는 컬럼 개수를 가진 임시 헤더용 DT 생성 

A1) 

// VBA 스크립트지만 하이라이팅이 없으므로 C# 주석 사용
// input : in_int_헤더개수 (input, Integer)
// output : out_dt_임시DT (output, DataTable)
Dim dt_tmp As New DataTable()

For int_i as Integer To in_int_헤더개수
	dt_tmp.Columns.Add("Columns " + int_i.ToString(), typeof(Object));
Next int_i

// Return
out_dt_임시DT = dt_tmp

 

Q2) 데이터가 있는 데이터 테이블의 헤더만 추출하기

A2) 

// 아래 내용은 VBA 코드임

 

728x90
반응형
728x90
반응형

1. Volume Lable로 디스크 문자 얻기 (네크워크 디스크 식별 시에도 가능)

// input : in_str_VolumeLavle (String)
// output : out_str_name (String)
// ex) 로컬 -> C:\
// ex) 디스크 -> C:\
// ex) 로컬 디스크 -> C:\

froeach (DriveInfo d in DriveInfo.GetDrives()){
	if(d.volumeLabel.Contains(in_str_VolumeLable)){
    		out_str_name = d.Name;
	}
}

 

728x90
반응형
728x90
반응형

1. 개요

  •  오케스트레이터 없이 단독으로 라이선스 키를 등록할 경우, UiPath.LisenceTool.exe를 사용
  •  라이선스 활성화, 비활성화, 조회 기능을 배치 파일로 제작하여 라이선스 변경 작업을 단순화함
  •  아래 경로는 UiPath 설치 기본 경로에 따라 다를 수 있음
  •  아래 코드를 메모장에 적고 .bat 확장자로 저장해서 배치파일로 활용 가능

 

2. 라이선스 활성화

@echo off
cd C:\Program Files (x86)\UiPath\Studio
UiPath.LicenseTool.exe activate -l ****-****-****-****
pause

 

3. 라이선스 비활성화

@echo off
cd C:\Program Files (x86)\UiPath\Studio
UiPath.LicenseTool.exe deactivate
pause

 

4. 현재 라이선스 상태 조회

@echo off
cd C:\Program Files (x86)\UiPath\Studio
UiPath.LicenseTool.exe info
pause

 

728x90
반응형
728x90
반응형

1. 개요

 - 기본적으로 제공되는 기능이 아닌 특정 기능을 가진 Activity를 제작할 때 사용

 - C#을 기반으로 하며 패키지를 만드는 방법 중 간편한 방법을 사용할 예정임

 - Visual Studio 2019 Community, UiPath Stdio 2021.4.4 버전 사용

 


2. nupkg 생성 

확장 > 확장 관리 클릭
UiPath Activity Creator 다운로드
프로그램 재실행 후 새 프로젝트 생성
uipath 선택 후 다음 클릭
프로젝트 이름 입력
Activities 폴더 클릭 후 확장 > Add Activities 클릭
Create 클릭
입력 후 Edit 클릭
UiPath Studio > Property에서 입력 받을 인수 정의
Finish 클릭
만들어진 C# 파일 클릭
확장 후 해당 부분에 코드 작성
작성이 완료되면 .Activities 우클릭 후 게시 클릭
폴더 클릭 후 다음 클릭
nupkg 파일이 추출될 경로 입력
게시
입력한 경로에 추출된 nupkg 파일

 


3. Activity 사용

프로세스 생성
nupkg 파일 경로 입력 후 체크
추가된 패키지 경로에서 패키지 설치 후 저장
드래그 후 인수 입력

 


4. 결과

 

728x90
반응형
728x90
반응형

1. 로봇 배포하기

 - 오케스트레이터가 없이 로컬에서 작동하는 AR StandAlone 로봇이라고 가정

 - 스튜디오가 설치되어 있고 라이선스의 변경이 가능하다고 가정

 - 스튜디오에서 스크립트 작성 후 Publish 클릭 (Studio 라이선스 활용)

 - Assistant에서 내려받기 버튼 클릭

 - 배포시 로봇은

    %HomePath%\.nuget\Package\,

    %ProgramData%\UiPath\Package\

   폴더에 해당 프로젝트 이름으로 생성됨

 

 


2. 스케줄 걸어두기

 - 윈도우 작업 스케줄러 실행   

윈도우 작업 스케줄러
우클릭 > 새 작업 만들기
트리거 생성
동작 생성

  ** 프로그램/스크립트(P) : ‪C:\Program Files (x86)\UiPath\Studio\UiRobot.exe

  ** 인수 추가(옵션)(A) : execute -p 배포된로봇이름

 

 

Q1 ) UiRobot.exe의 위치를 찾을 수 없음

A1 ) 아래 코드를 관리자 권한으로 실행된 cmd에 차례로 입력 후 결과 확인

# 다른 드라이브 설치 시 해당 드라이브 명을 입력하여 이동 한 뒤 아래 코드 진행
# ex) D:
cd /
dir /s /b | find /i "uirobot.exe"

결과

 

 

Q2 ) UiRobot.exe가 없음

A2 ) Studio 설치 후 재확인

 


3. 배포된 로봇 삭제하기 (수동)

 -  %ProgramData%\UiPath\Package\

 -  %HomePath%\.nuget\Package\

 배포시 생성되었던 위 경로 내부의 로봇 관련 폴더 삭제 후 Assistant 새로고침


 

728x90
반응형
728x90
반응형

** 주석처리 문자열은 VBA의 경우 ' 이지만, Tistory 코드블럭 기능에는 VBA 하이라이팅 기능이 없으므로 C# 주석인 //를 사용함.

 

1. 디렉토리 검사 후 없으면 생성

// 디렉토리 경로 검사해서 없으면 생성
If Directory.Exists("directory_path") = False Then
    Directory.CreateDirectory("directory_path")
End If

// 특정 경로 내부의 특정 키워드를 가진 파일 찾기
// input : keyword
// output : str_result ( 키워드를 가진 Full Path의 파일명과 확장자)
for each str_file as String in Directory.getFiles()
	If str_file.contain("keyword") Then
    	str_result = Path.getFileName(str_file)
    End If
Next

 

2.  현재 프로젝트의 위치를 구한 뒤 파일 복사

Dim str_curPath As String = Directory.GetCurrentDirectory()

File.Copy("source_file.txt", str_curPath + "\dest_file.txt")

 

3. 날짜 문자열 다루기

// 오늘 날짜를 특정 형식의 문자열로 변경
now.ToString("yyyyMMdd")
now.ToString("yy년 MM월 dd일")
now.ToString("yy-MM-dd")

// 특정 형식의 문자열을 DateTime으로 바꾸기, 
DateTime.Parse("yyyy-MM-dd")
DateTime.Parse("yyyy.MM.dd")

// DateTime.Parse로 인식이 안되는 날짜 양식 처리
DateTime.parseExact("20210601", "yyyyMMdd", Nothing)

// 날짜 비교
If now > DateTime.parseExact("20210601", "yyyyMMdd", Nothing) And now < DateTime.parseExact("20210630", "yyyyMMdd", Nothing)Then
	Console.writeline("현재 월 : 6월")
End If

// 현재 주의 특정 요일 날짜 구하기 (금요일 기준, 원하는 요일은 DayOfWeek.Friday 이부분 수정)
now.addDays(Int32.Parse(DayOfWeek.Friday - Today.DayOfWeek).ToString).ToString("yyyyMMdd")

 

4. 프로세스 종료

For Each str_프로세스 As Process In Process.GetProcesses()
    If str_프로세스.ToString.Contains("iexplore") Then
        str_프로세스.kill
    End If
Next

 

5. 문자열 리스트에 문자열 추가하기, List To Array

Dim list_tmp As New List(Of String)

list_tmp.add(str_input) 'input 문자열을 List에 추가

Arr_output = list_tmp.ToArray()

 

6. 이름 중간부분 마스킹 처리하기

// Input Data
str_name = "테스트"

// 문자열 처리
Dim str_star As String
Dim int_i As Integer
Dim int_dest As Integer

If str_name.Length < = 2 Then
	int_dest = str_name.Length - 1
Else
	int_dest = str_name.Length - 2
End If

For int_i = 1 To int_dest
	str_star += "*"
Next int_i


// Output Data
str_result = str_name.Replace(str_name.Substring(1, int_dest), str_star)

// ***********************
// 결과 예시
// 테 -> Error
// 테스 -> 테*
// 테스트 -> 테*트
// 테스트테 -> 테**테
// 테스트테스 -> 테***스
// ***********************

 

7. 하위 디렉토리,파일 전체 복사

FileIO.FileSystem.CopyDirectory(Source 경로, Destination 경로)
728x90
반응형
728x90
반응형

 

** UiPath 연습용 프로젝트, 현재 포스팅 정리 중

목표 : 매일 정해진 시간에 구독자에게 네이버 오늘의 회화를 보내주는 로봇 제작

 

 

1. 네이버 오늘의 회화 사이트

https://learn.dict.naver.com/conversation#/endic/

 

 

2. 프로세스 만들기

 

3. 플로우 차트 구성 

 

 

 

 

4. 느낀점 

- 작동은 되지만 딜레이는 어시스턴트나 오케스트레이터의 스케줄 기능을 활용하는 게 더 나음

 

 

 

 

 

 

728x90
반응형
728x90
반응형


** 개인 공부용, 내용 중 잘못된 부분이나 시간이 지나면서 변경된 부분이 있을 수 있음


1. 시작 (환경 설정)


Step 1. UiPath Studio Download -> https://www.uipath.com/ko/ 


Step 2. 커뮤니티 클라우드 에디션 선택 (무료)


Step 3. Sign up (아무거나 편한걸로 로그인 하면 됨.)


Step 4. 입력하다보면 나오는 화면. (블로그 글 작성 전에 만들어서 로그인시 앞에 내용이 생략됨, 대충 적어달라는 내용 적어주면 됨)



Step 5.  UiPath Studio 설치 

  


Step 6. UiPath Studio UI

** 오케스트레이터, 커뮤니티, 아카데미 둥 많은 유혹이 있지만 일단 스튜디오 설치부터 하기








2. UiPath Academy


Step 1. 자체적으로 운영하는 교육용 사이트로 검색으로 통해서 들어가도 좋고, 스튜디오 실행시 뜨는 팝업 창에서 들어가도 됨. (동영상 시청, 자습서, 아카데미 중 아카데미 클릭)


Step 2. 1번 (Learning Plan)클릭 후 2번, 3번 순으로 학습 (RPA Developer Foundation -> RPA Developer Advanced)


Step 3. Foundation 내부 자료들.


** 기초 문법 공부 하려면 하나씩 봐주면 됨.

728x90
반응형
728x90
반응형

 (size : 300) / (size : 640)


** 마지막 수정일 : 2020-12-19

** 찾아가면서 공부하는 중이라 정확하지 않은 정보가 있을 수 있음. (#F15F5F)

** 주석 (#22741C)


1. 용어 해설 (size : 12/ 10)

- RPA : Robotic Process Automation  https://namu.wiki/w/RPA

- UIPath Studio : UiPath 사의 RPA 툴  https://www.uipath.com/ko/

- UiPath Studio X : 컴퓨터 비전공자 버전

- Attended Robot : 유인로봇, 사람과 소통하면서 작업 시행 

- Unattended Robot : 무인로봇, 사람과 소통하지 않아도 알아서 정해진 작업 시행 

- Orchestrator : 로봇 관리, 모니터링, 원격 실행, 패키지/라이브러리 배포 등의 역할을 하는 서버



2. 해볼거

- 유인 로봇(Attended) : 웹에서 데이터 가져와서 파일로 저장, 파일 읽어서 데이터 정리

- 무인 로봇(Unattended) : 

- 오케스트레이터 : 서버 구축, 대량 데이터 처리(Queue 활용 병렬 처리), 패키지 배포, 라이브러리 배포, 프로세스 원격 실행 및 스케줄링

- 기타 : 카카오톡 자동응답, 리스트에 있는 사람들에게 메일 보내주기, 주식관련 정보 수집, 자동 수강신청(예매 등), OCR 기능



3. 느낀점 

- 윈도우에서만 작동하는게 아쉬움 

- 활용도는 개발자 역량에 따라 다름

- 회사 업무가 반복적이고 비효율적이라면  업무 효율을 올릴 수 있을 듯

- 툴에 코드가 거의 없음. (컴퓨터 비전공자도 쉽게 접근 가능 -> VB/ C# 코드 활용하긴 함)

728x90
반응형

+ Recent posts