PyAutoGUIで画面操作を自動化することで単純な繰り返し作業から開放された件
PyAutoGUIとは
PyAutoGUIは人が行うマウス、キーボード操作を自動化してくれるpythonのライブラリです。
RPA(ロボティック・プロセス・オートメーション)が広まりつつありますが、専用のソフトを用いなくてもPyAutoGUIを使うことで、比較的簡単にRPAの環境が構築できます。
導入するきっかけ
excelファイルから値を抽出して、貼り付ける作業を依頼されました。ただ台数が数百台もあり、人もいなかったので途方にくれていたことがきっかけです。
どんな操作ができるのか
キー操作に関する詳しい情報は下記のサイトがよくまとまっていました。
実際には以下のように作っていきます。今回はデモで、メモ帳からある値を取得し、edgeで検索するような動作をためしています。
#ライブラリをインポートする。pyperclipやpyautoguiは外部モジュールなので、pipでインストールする。
#pip install pyautogui
#pip install pyperclip
import subprocess
import pyautogui as pag
import time
import pyperclip
#subprrocessの「Popen関数」で他のプログラム(今回はメモ帳)を開く
subprocess.Popen('notepad.exe')
time.sleep(1)
#pyautoguiは日本語入力が使えない。クリップボードを経由してコピー
pyperclip.copy('こんにちは')
pag.hotkey('ctrl','v')
#今回は「happy!」をコピーして、edgeに貼り付け
pag.press('enter')
pyperclip.copy('happy!')
pag.hotkey('ctrl', 'v')
time.sleep(2)
#edgeのリンクを変数に格納
link='C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
#edgeを起動する。
subprocess.Popen(link)
time.sleep(1)
#クリップボードの内容(happy!)をペーストする。
pag.hotkey('ctrl', 'v')
time.sleep(2)
#enterキーを押して検索する。
pag.press('enter')
ポイントはsleepを使って処理待ちを実施することです。また、「ウインドウが開くまで待つ」といった処理を実施することも重要です。上記のコードですとedgeが開くまでウエイトするような動作も有効です。時間がある方は是非お試しください。
実際にはexcelファイルや専用のソフトウェアを操作することになるかと思います。
導入するメリット
理由①:無料である
pythonが使えれば比較的簡単に実装できます。専用のソフトウェアでRPA環境を構築しようとすると結構な費用がかかります。しかし、PyAutoGUIは無料で環境構築ができます。
理由②:単純作業やミスから開放される。
例えばexcelから必要なセルをコピーして、専用のソフトやメモ帳に貼り付ける操作を100回繰り返すような作業をする場合、地道に作業をするのは大変です。ミスの原因にもなります。
でも、PyAutoGUIを使えばpythonが変わりにやってくれます。
しかしデメリットもあった
それは「python」の環境がないと使えないということ(当たり前か)。これはちょっと困るという人もいるかもしれません。自宅ならまだしも会社では難しい場合も多いようです。
「pythonでいろいろ作られると迷惑」
「情報セキュリティポリシー上、厳しい」
という理由もあり、結局pythonが導入できないなんていう企業も実際にあると聞いたこともあります。
そこでさらなる改良
「pythonが導入されていないほかの端末にも導入したい」となると、実行ファイルを作成してみるのが早いです。そんな夢のようなライブラリにはpythonにはしっかり存在します。
それがpyinstallerです。
セキュリティに厳しいでも「実行ファイルの一つくらいは許すか」となってくれる場合もあります。という訳で今度はpyinstallerで実行ファイルを作成し、他の端末で実行してみましょう。