PCの単純作業を自動化(マウス・キーボード編)

未分類

事務作業をしていると単純なキーボードやマウスの操作の繰り返しが発生することがあるかと思います。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()現在のマウス位置

コメント

タイトルとURLをコピーしました