본문 바로가기

RPA

(22)
[UiPath] DataTable에서 Empty Value만 지우기 제목만 보면.. 무슨 소린가 하겠는데요 아래 예시와 같이 중간중간 섞여있는 Empty Value만 지우고 값을 당겨서 쓰고 싶습니다 생각나는 방법으로는 VBA로 해결하기와 DT조작해서 해결하기... 그 중에서 DT조작으로 해결해봤습니다. 작업은 For Each 안에서 하게 되는데요. 나중에 어떤 열에대한 작업을 하는 지 확인하는 지 편하도록 collection을 Excel Column Letter로 설정해주었습니다. 아래 소스를 사용하면 Z열 이후의 Column Letter도 Index로 쉽게 변환 가능합니다. intIdx = UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnLetterToColumnIndex(i.ToString) - 1 다음으론 DT에서 작업할 열..
[UiPath] 내가 자주 쓰는 거.. 자주 안 쓰면 까먹어서 백업용으로 작성합니다.... - DataTable Column을 Array로 만들기 dtData.AsEnumerable().Select(Function (a) a.Field(Of String)("컬럼명").ToString).ToArray() - Enumerable에서 다른 Enumerable에 들어 있는 항목 찾기 // enumMaster에 들어있는 모든 항목이 포함된 데이터를 찾음 enumData.Where(Function(a) enumMaster.All(Function(b) a.ToString.Contains(b))) // enumMaster에 들어있는 항목 중 한 개라도 포함된 데이터를 찾음 enumData.Where(Function(a) enumMaster.Any(Funct..
[UiPath] xml 파일 다뤄보기 xml 파일을 다룰 일이 생겼습니다... 프로그램 세팅 정보를 xml 파일로 저장하고 있었는데 UI로 설정을 변경하기에는 에러가 너무 많이 날법한.. 구조였습니다... 암튼 여차저차 프로그램 세팅 정보를 로컬에 xml 형식으로 가지고 있는 것을 알아냈고, 그 xml 파일을 변경하려고 했습니다. 대충 이렇게 생긴 xml 파일이었는데 NAME, LANGUAGE, ID 값을 바꿔볼 것입니다.. 우선 xml 파일을 읽어준 뒤 Deserialize XML 액티비티를 사용하여 역직렬화를 해줍니다. 역직렬화는 특정 포맷 상태의 데이터를 다시 객체로 변환하는 것을 뜻한다고 합니다. Deserialize XML를 하면 XDocument 형태의 데이터 타입으로 반환되는데 Invoke Method로 변경하고 싶은 데이터를 ..
[UiPath] 음성인식으로 reCaptcha 풀어보기 - 2 2편입니다.. 굳이 Python을 활용하는 이유는... Google Speech를 사용할 것이기 때문입니다. UiPath에도 Google Speech 패키지가 있지만 API키가 필요하고, 이걸 물어본 친구의 프로젝트에서는 API 키를 발급받을 수 없기 때문입니다.... 사전 준비가 필요합니다. 1. .NET 5.0 SDK 설치 2. Python 설치 3. SpeechRecognition 설치 4. pydub 설치 5. ffmpeg 설정 6. UiPath Python 패키지 설치 1편보단 준비할 것이 좀 많습니다.. 1. .NET 5.0 SDK 설치 Python Scope를 사용하기 위해서 필요합니다. UiPath Docs에서는 .NET Desktop Runtime 5.0.17을 설치해야한다고 합니다. 상..
[UiPath] 음성인식으로 reCaptcha 풀어보기 - 1 로그인할 때 종종 보이는 reCaptcha.. 친구가 reCaptcha가 있을 때 UiPath로 로그인하는 방법을 아냐고 물어봐서 호기심에 시작해봤슴다. 체크 박스를 누르면 위의 화면이 표시되는데요 저 상태로는 풀기 힘들 것 같아 오디오로 푸는 방법을 선택했습니다. 아주 간편하게....... Chrome Extension으로 푸는 방법이 있습니다.! 헤드셋 버튼을 누르면 나오는 화면입니다. 다운로드 버튼을 눌러서 오디오 파일(mp3)을 다운로드 받을 수 있습니다. 처음은 .NET으로 시도해봤습니다. 우선 준비할 것이있는데.. 1. 영어 언어팩 설치 2. UiPath에서 System.Speech 패키지 설치 1. 영어 언어팩 설치 reCaptcha의 음성이 영어로 나오기 때문에 인식을 위해선 깔아주어야 합..
[UiPath] Duplicate Column 중복되는 컬럼 제거를 할 것입니다. DT에는 컬럼이 중복되어서 들어가지 않는데 무슨 소리냐 하신다면... Data Scraping을 하였는데 컬럼이 되어야 할 열에 중복되는 데이터가 들어가는 상황이었습니다. 근본적으로 Data Scraping이 왜 잘못되는지 파악한 후, 그것을 조치하는 게 맞겠지만.. 역시나 시간이 없고 간헐적으로 발생하는 문제라서 .. 임시방편으로 다음과 같이 해결하였습니다. 저의 경우에는 C, D, E 같은 데이터를 가진 열이 중복되어 들어가는 상황이었습니다. Data Scraping이 이상하게 되는 현상을 재현할 수 없어 위와 같이 데이터를 생성하였습니다. Invoke Code를 사용하여 해결하였고 코드는 아래와 같습니다. // Column Name을 담을 List를 생성 Dim ..
[UiPath] Activate가 안될 때 작업 중이던 Window가 다른 Window 뒤로 숨어버릴 때가 있습니다. Activate 액티비티도 먹지 않고 내부 셀렉터도 잡히지 않는 경우였는데요. (XPlatform) 그럴 때 종종 사용하는 방법입니다. 일반적인 경우에는 위의 Activate 액티비티 또는 Invoke Code 둘 중 하나만 사용해도 상관없습니다. 근데 XPlatform은 둘 중 하나만 사용하면 제대로 되지 않아서 둘 다 사용했습니다. Invoke Code Sorce For Each procc As Process In Process.GetProcesses() If procc.ToString.Contains("notepad") Then // 해당 코드의 notepad는 가져와야 하는 Window의 프로세스 명으로 대치 Console..
[UiPath] 디렉토리의 파일명만 가져오기 디렉토리의 파일을 가져오는 것은 Directory.GetFiles()로 할 수 있습니다. 하지만 fullpath로 가져오게 되는데요 디렉토리의 파일명만 가져오는 방법에 대해 포스팅 하겠습니다. 테스트할 폴더를 생성했습니다 String.Join(Environment.NewLine, Directory.GetFiles("C:\RPA\testFolder")) String.Join(separator, Array)로 다음과 같이 출력할 수 있습니다 String.Join(Environment.NewLine, Directory.GetFiles("C:\RPA\testFolder").Select(Function(a) Path.GetFileName(a))) Path.GetFileName으로 파일명만 가져올 수 있습니다. P..