PyAutoGUIは、Pythonから**マウスの操作(移動、クリック、ドラッグ)やキーボードの操作(キー入力、タイピング)**を自動化できるライブラリです。APIが公開されていないデスクトップアプリや社内システムなど、画面上でしか操作できないソフトウェアに対して、繰り返し行う必要がある操作を自動化するのに役立ちます。PyAutoGUIはWindowsとMacの両方で利用でき、コードも比較的簡単なため、自作の業務効率化ツールを作成するのに適しています。
PyAutoGUIの基本的な使い方
事前準備
まず、PyAutoGUIをインストールする必要があります。ターミナルまたはコマンドプロンプトで以下のコマンドを実行します。
pip install pyautogui
Macの場合は、システム設定の「プライバシーとセキュリティ」から「アクセシビリティ」を開き、コードを実行しているツール(例:VS Code)のコンピューター制御を許可する必要があります。
マウス操作
マウスカーソルの移動
マウスカーソルを移動させるには、pyautogui.moveTo(x座標, y座標)
を使用します。座標は画面の左上が(0, 0)となり、x座標が横軸、y座標が縦軸です。
import pyautogui
pyautogui.moveTo(150, 100)
このコードを実行すると、マウスカーソルが(150, 100)の位置に移動します。
クリック
クリックを行うには、pyautogui.click()
を使用します。現在のマウスカーソル位置でクリックします。座標を指定してクリックすることも可能です。
pyautogui.click() # 現在位置でクリック
pyautogui.click(x=100, y=200) # (100, 200)の位置へ移動してクリック
右クリック
右クリックを行う場合は、click()
関数のbutton
引数に'right'
を指定します。
pyautogui.click(button='right')
ドラッグ
ドラッグ操作には、pyautogui.dragTo(x座標, y座標, duration=秒数, button='ボタンの種類')
を使用します。moveTo()
で開始位置に移動後、dragTo()
で指定した座標までドラッグします。duration
でドラッグの速度、button
でドラッグ中に押すマウスボタン(例:'left'
)を指定できます。
pyautogui.moveTo(200, 200)
pyautogui.dragTo(300, 200, duration=1, button='left')
キーボード操作
キーを押す
特定のキーを押すには、pyautogui.keyDown('キー名')
を使用します。例えば、Enterキーを押す場合は以下のようになります。
pyautogui.keyDown('enter')
タイピング
文字を入力するには、pyautogui.typewrite('文字列')
を使用します。
pyautogui.moveTo(200, 200)
pyautogui.click()
pyautogui.typewrite('Hello')
日本語を入力する場合、pyautogui.typewrite()
ではうまくいきません。代わりに、pyperclip
ライブラリーを使ってクリップボードに文字をコピーし、pyautogui.hotkey()
で貼り付け(Ctrl+VまたはCmd+V)を実行します。pyperclip
はPyAutoGUIインストール時に同時にインストールされます。
import pyperclip
import pyautogui
pyperclip.copy('こんにちは')
pyautogui.hotkey('ctrl', 'v') # Windowsの場合
# pyautogui.hotkey('command', 'v') # Macの場合
具体的な利用ケース:近体システムへの社員情報登録の自動化
人事部から送られてくるCSVファイル(社員番号、氏名、雇用形態)をもとに、Webベースの近体システムに社員情報を登録する作業を自動化するシステムには、一括アップロード機能やAPIがないため、手作業でコピー&ペーストを繰り返す必要がありました。
これを自動化のスクリプトとして、以下の手順で進めていきましょう。:
-
pandas
ライブラリーでCSVファイルを読み込みます。 - 読み込んだデータを1行ずつ処理するループを作成します。
- 各行の雇用形態に応じて、画面上の該当するラジオボタンをクリックします (
pyautogui.click()
)。 - 社員番号のテキストボックスをクリックし (
pyautogui.click()
)、pyperclip.copy()
で社員番号をクリップボードにコピーした後、pyautogui.hotkey('ctrl', 'v')
で貼り付けます。 - 同様に、氏名のテキストボックスをクリックし (
pyautogui.click()
)、pyperclip.copy()
とpyautogui.hotkey('ctrl', 'v')
で氏名を貼り付けます。 - 登録ボタンをクリックします (
pyautogui.click()
)。 - 登録完了のポップアップが表示されたらOKボタンをクリックします (
pyautogui.click()
)。
この例では、繰り返し行う必要のある画面操作を自動化することで、大幅な時間短縮と正確性の向上が期待できます。
注意点として、自動化プログラムが実行中はマウスカーソルがプログラムに制御されるため、基本的にPC上で他の作業は行わない方が良いとされています。
参照動画
- 業務効率化!【画面操作を自動化しよう】〜PyAutoGUIを解説〜初心者向け - Pythonプログラミング VTuber サプー: https://www.youtube.com/watch?v=a_zP_v4t_Vw