RPA 어디까지 가능한가?(2) – RDA, 우리도 할 수 있다!

이번 글에서는 RPA 프로그램 없이 “RPA 어디까지 가능한가?”를 구현하는 기술적인 내용을 담고 있습니다. 이는 일부 예시로써 실제 프로그램은 더 많은 것이 가능한 점 알려드립니다.

안녕하세요.
이번에는 이전 글에서 나온 RDA를 구현해보려 합니다. 실제로 연구원 또는 분석가들은 자신이 사용하는 컴퓨터언어로 유의미한 결과를 도출하는데 집중하기 때문에, 이런 영역으로는 실제로 구현해본 적이 없기도 합니다. (사실 필요성이 따로 느껴지진 않죠.)

저도 그렇습니다. 일반적으로 일을 하게 되면 저는 R을 사용해 각종 데이터를 분석하거나, 저희 제품이 어떻게 더 개선되었으면 좋을지에 대해 고민하는 것이 대부분입니다. 그래서 분석과 관련되지 않는 영역은 잘 하지 않고, 될까?라는 생각만 가질 때가 많았죠.

하지만 RPA 쪽 개발자가 아닌 다른 사람들도 실제로는 RPA나 RDA를 해볼 수 있다는 것을 알게 되었습니다. 그래서 오늘 한번 가져와봤습니다. 오로지 흥미만을 위해 만들어본 “RDA 구현하기!” 사용법이 그리 어렵진 않으니 소개해보려고 합니다.

우선, 예시 영상입니다. 천천히 단계별로 보여드리기 위해 속도를 조금 낮췄습니다.

영상에서 보시는 업무는 자동으로 퍼즐데이터의 뉴스를 가져와 메일로 보내는 업무입니다. 물론 사용자에 따라 다른 업무에 적용할 수 있습니다만, 중요한 것은 이것. 저는 손 하나 까딱하지 않았습니다. 제가 작업한 건 약 30초 전부터 [화면 녹화하기] 뿐이죠.

서론이 길었네요, 바로 시작해보겠습니다. 우선 준비물은 세 가지가 필요합니다.

1) R
2) “KeyboardSimulator”패키지
3) “taskscheduleR”패키지

R은 실행을 위한 언어이고, 키보드나 마우스를 대신 눌러주는 keyboard simulator 패키지, 언제 이 일을 해줬으면 좋겠는지 스케줄링 할 수 있는 taskscheduleR 패키지입니다.

R을 실행하시게 되면, 아래에 이 코드를 입력해 준비물을 설치하겠습니다.
install.packages(“KeyboardSimulator”) # 패키지를 설치하는 명령입니다.
install.packages(“taskscheduleR”)
require(KeyboardSimulator) # 설치된 패키지를 사용하겠다는 명령입니다.
require(taskscheduleR)

keyboard simulator는 크게는 4개 정도의 함수를 사용합니다.
– 마우스 커서 위치를 확인하는 mouse.get_cursor()
– 마우스 커서를 옮기는 mouse.move(x, y, duration = n)
– 마우스 입력 관련 mouse.click(button = “left”, hold = TRUE) / mouse.release(button = “left”)
– 키보드 입력 관련 keybd.press(“Tab”) / keybd.release(“Alt”) 가 끝이죠.

실제로 우리가 범위를 지정하는 것도 결국 클릭해서 누르고 있다가 옮겨서 놓는 게 끝이므로 위의 내용을 제외하고는 많은 것들이 필요하진 않습니다.

즉, 어디를 클릭하고 어떤 것을 입력할지 정도로봐주시면 됩니다. (실제로는 R로 고차원적인 웹스크래핑도 가능하지만, 그건 저작권에 걸릴 수 있어 조심스럽습니다. 이때 웹스크랩은 표, 그림, 글과 같은 웹페이지의 내용을 가져오는 행위를 말합니다.)

실험 삼아 했다가 “철컹철컹” 하면 위험하니깐요. ?

위의 함수를 이용해 예시로 만들어보면 다음처럼 만들 수 있습니다.

#puzzle data 입력
keybd.press(“p+u+z+z+l+e+space+d+a+t+a”)

## 창 전환 (alt+tab)
keybd.press(“Alt”, hold = T)
keybd.press(“Tab”)
keybd.release(“Alt”)
Sys.sleep(0.5) # 입력이 많으면 가끔 컴퓨터가 놓칠 수 있으니, 키 입력 사이에 종종 넣어 정확히 돌아가도록 조정합니다.
keybd.press(“enter”)

# 마우스 드래그 앤 드롭
mouse.click(button = “left”, hold = TRUE)
mouse.move(x, y, duration = n)
mouse.release(button = “left”)

# 현재 마우스 포인터 위치값 구하기
mouse.get_cursor()

# 마우스를 화면상의 (x, y) 위치로 이동시킵니다. Duration을 입력하면 입력값(초) 만큼의 시간 동안 해당 위치로 이동합니다.
mouse.move(x, y, duration = 3)

이렇게 짜여진 내용을 이용하면 위와 같았던 업무 자동화를 구현할 수 있습니다. 이제 그럼 매일매일 컴퓨터가 정해진 시간에 맞춰 할 수 있도록 명령을 내려보겠습니다. 우선은 작성하신 코드 내용을 “파일이름.R”이라는 파일로 저장해 주세요. “ .R ”은 파일 이름만 지정하면 자동으로 생성됩니다.

● Rstudio를 사용하시는 분들에게는 이 부분을!

● R만 사용하시는 분들은 함수를 이렇게 입력해 주시면 되겠습니다. 예를 들어 내일부터 매일 아침 9시에 my_script.R이라는 스크립트를 실행한다고 하면 콘솔이라는 바로 실행 가능한 이곳에

taskscheduler_create(taskname = “매일 아침 9시 반복작업”,
rscript = “my_script.R의 파일위치”,
schedule = “DAILY”,
starttime = “09:00”,
startdate = format(Sys.Date()+1, “%d/%m/%Y”))

이것을 실행해 주시면 되겠습니다.

그럼 이젠 우리가 하던 반복적인 업무는 매일매일 컴퓨터가 대신해 줄 겁니다. 반복적이고 단순했던 업무, 이젠 컴퓨터에게 맡기고 우리의 삶에 여유를 가져볼까요?

이것을 실행해 주시면 되겠습니다.