업무자동화(RPA) 2편 - 윈도우 자동화
pyautogui
pyautogui는 파이썬의 인기있는 모듈 중에 하나이다. 이 모듈을 사용하면 키보드와 마우스 입력을 할 수도 있고, 이미지를 찾아내 그 위치를 반환시킬 수도 있다.
pip install pyautogui
를 터미널에 입력해 설치할 수 있으며 PyAutoGUI documentation에서 여러가지 기능들을 확인할 수 있다.
사용 방법
pyautogui를 사용하면 마우스를 클릭하거나, 키보드를 입력하거나 등의 여러가지 이벤트를 수행할 수 있다. 하지만 한글은 지원이 되지 않기 때문에 만약 한글로 키보드 입력을 시도했다면 공백을 표시하는 것을 볼 수 있을 것이다. 만약 한글 텍스트를 입력하고 싶다면
pip install pyperclip
을 터미널에 입력해 pyperclip을 설치해준 다음 pyperclip 모듈로 클립보드에 한글 텍스트를 저장하고 붙여넣기 하는 식으로 사용하면 된다.
이전의 업무자동화(RPA) 1편 - 엑셀 에서 학생들의 데이터를 받아서 성적을 표시해주는 엑셀파일을 만들었다. 이 엑셀파일의 데이터를 가지고 파워포인트에 카드형식으로 저장해주는 프로그램을 만들어보자.
완성된 코드
ppt와 엑셀을 자동으로 실행시켜주지는 않지만 필요한 파일을 띄워놓으면 자동으로 성적을 입력해주는 프로그램을 만들었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import pyautogui
test = 0
if test == 1:
pyautogui.mouseInfo()
else:
# 현재 화면 크기를 반환하는 변수 Width [0] Height [1]
now_display_size = pyautogui.size()
# 엑셀을 저장할 변수
excel = pyautogui.getWindowsWithTitle("Excel")[0]
print(excel)
# 파워포인트를 저장할 변수
ppt = pyautogui.getWindowsWithTitle("PowerPoint")[0]
print(ppt)
# 반복할 횟수
repeat_count = 10
# 엑셀/파워포인트 활성화 시키고 화면 왼쪽, 오른쪽으로 나누기
if excel.isActive == False:
excel.activate()
excel.maximize()
pyautogui.hotkey("win", "left")
pyautogui.sleep(1)
if ppt.isActive == False:
ppt.activate()
ppt.maximize()
pyautogui.hotkey("win", "right")
# 데이터 복사
# 엑셀 학번 위치 반환
student_id = [113, 376]
# 엑셀 총점 위치 반환
student_total_score = [723, 379]
# 엑셀 성적 위치 반환
student_record = [749, 380]
# 엑셀 셀 간의 간격 크기
cell_interval = 30
# 파워포인트 학번 위치 반환
student_ppt_id = [1618, 563]
# 파워포인트 총점 위치 반환
student_ppt_total_score = [2450, 558]
# 파워포인트 성적 위치 반환
student_ppt_record = [2041, 721]
# 자동화
for i in range(0, repeat_count):
excel.activate()
pyautogui.click(student_id, duration=0.25)
pyautogui.hotkey("ctrl", "c")
ppt.activate()
pyautogui.doubleClick(student_ppt_id, duration=0.25)
pyautogui.hotkey("ctrl", "v")
student_id[1] += cell_interval
excel.activate()
pyautogui.click(student_total_score, duration=0.25)
pyautogui.hotkey("ctrl", "c")
ppt.activate()
pyautogui.doubleClick(student_ppt_total_score, duration=0.25)
pyautogui.hotkey("ctrl", "v")
student_total_score[1] += cell_interval
excel.activate()
pyautogui.click(student_record, duration=0.25)
pyautogui.hotkey("ctrl", "c")
ppt.activate()
pyautogui.doubleClick(student_ppt_record, duration=0.25)
pyautogui.hotkey("ctrl", "v")
student_record[1] += cell_interval
pyautogui.click(1899, 347) # 빈 공간 클릭
pyautogui.hotkey("down") # ppt 슬라이드를 넘겨줌
단순한 매크로를 만드는 프로그래밍을 해보았다. 단순히 마우스의 위치와 클릭만 해줄게 아니라 그 창을 활성화 시켜주고 창을 적절한 크기에 갖다주는것이 중요한 것 같다.
댓글남기기