事務作業をしていると単純なキーボードやマウスの操作の繰り返しが発生することがあるかと思います。100回程度であればそれほど苦ではなかったりするかもしれませんが数千回ともなるも絶望しますよね。そんな繰り返し作業こそプログラムが活躍します。それではPythonをつかって自動化を進めていきましょう。
Pythonの環境構築がまだのひとはこちらから
必要なライブラリ
PyAutoGUI
PyAutoGUI は、Pythonでマウスやキーボードの操作を自動化できるライブラリです。
たとえば、こんなことができます。
- マウスを自動で動かしてクリックする
- 自動でキーボード入力を行う
- スクリーンショットを撮る
- 画像認識でボタンを見つけてクリックする
つまり、「人間が手動で操作していた作業」をPythonにやらせることができるツールです。
インストール方法
pip install pyautogui pillow
*簡易的な画像判別をするためのライブラリであるpillowも入れておく。
基本的な使い方
よく使われる機能からやってみましょう。
マウスを動かす
import pyautogui
# 画面サイズを確認
print(pyautogui.size())
# マウスを座標(x=100, y=200)の位置に移動
pyautogui.moveTo(100, 200, duration=1)
duration=1 は「1秒かけて移動する」という意味です。
急にカーソルが動くのが怖い人は、少し時間を設定しておきましょう。
マウスクリックをしてみる
import pyautogui
# 座標(500, 500)をクリック
pyautogui.click(500, 500)
click() 以外にも以下のような関数があります。
doubleClick():ダブルクリックrightClick():右クリックmiddleClick():ホイールクリック
キーボード操作を自動化
import pyautogui
# テキスト入力
pyautogui.typewrite("Hello, Python automation!")
# Enterキーを押す
pyautogui.press("enter")
# 複数のキーを同時に押す
pyautogui.hotkey("ctrl", "s") # Ctrl + S(保存)
スクリーンショットを撮る
import pyautogui
# 画面全体を保存
screenshot = pyautogui.screenshot()
screenshot.save("screenshot.png")
# 特定の範囲を指定して撮影
pyautogui.screenshot("part.png", region=(0, 0, 500, 400))
画像を探してクリックする(応用編)
これは少し応用的ですが、実務で非常に便利です。
import pyautogui
import time
time.sleep(2) # 2秒待ってから実行
# 画像を探す(例: "button.png")
location = pyautogui.locateCenterOnScreen("button.png")
if location:
pyautogui.click(location)
else:
print("画像が見つかりませんでした。")
ボタンのスクリーンショットをあらかじめ保存しておけば、
自動でその位置を見つけてクリックしてくれます。
よく使われるPyAutoGUIの関数一覧
| 機能 | 関数 | 説明 |
|---|---|---|
| マウス移動 | moveTo(x, y, duration) | 指定位置に移動 |
| 相対移動 | move(xOffset, yOffset, duration) | 現在位置から移動 |
| クリック | click(x, y) | 左クリック |
| ダブルクリック | doubleClick(x, y) | ダブルクリック |
| 右クリック | rightClick(x, y) | 右クリック |
| ドラッグ | dragTo(x, y, duration) | 指定位置までドラッグ |
| スクロール | scroll(amount) | スクロール操作 |
| 文字入力 | typewrite(text) | テキスト入力 |
| キー押下 | press(key) | キーを押す |
| 同時押し | hotkey(key1, key2) | 例: Ctrl+S |
| スクリーンショット | screenshot(filename) | 画面を保存 |
| 画像検索 | locateOnScreen(img) | 画像位置を探す |
| 画像中央取得 | locateCenterOnScreen(img) | 画像の中心座標を返す |
| 画面サイズ取得 | size() | 解像度を取得 |
| 現在座標取得 | position() | 現在のマウス位置 |


コメント