pythonでキーボード・マウス操作を自動化して日常業務を効率化【RPA】


今回で習得できること

pythonでキーボード操作やマウス操作を自動化。
「艦〇れ」だろうが「城プ〇」だろうが周回を自動化できる。
高いライセンス料金でRPAツールを導入しなくても日常業務が効率化できる。
(実際に周回自動化をして見ようかと思ったが規約とか厄介なのでおとなしくやめておく)
リモートワークで離席しててもログイン状態を保てるので気付かれることなく・・・

操作したい画面のサイズを取得

pythonでキーボードやマウス操作を自動化するためのパッケージといえばpyautogui。

import pyautogui as pa
pa.size()
Size(width=1920, height=1200)

確認しやすさのためにtimeを使って動作の前に一旦停止させる。
自動操作の入力が早すぎて画面処理やブラウザが反応に追いつけない時があるので都合に合わせてtimeを使っていく。

原点からのマウスの移動

画面左上を(0,0)の座標として位置操作を行う。
moveToで(0,0)から指定の位置へマウスを移動させる。
durationで何秒かけて移動するかを指定する。

import time
time.sleep(1)

pa.moveTo(100,100,duration=1)

現在の位置を知る

pa.position()
Point(x=1735, y=157)

現在位置から動かす

現在位置から指定位置まで動かすのはmoveRel

time.sleep(1)
pa.moveRel(100,100,duration=1)

クリック・特殊クリック・ダブルクリック

pa.click(x=1839, y=293, button='left')
pa.leftClick()
pa.rightClick()
pa.doubleClick()

マウスの押し込み・離し

pa.mouseDown(x=1735, y=157)
pa.mouseUp()

moveRelと組み合わせればドラック&ドロップができる。

でもドラック&ドロップなら専用のものがある

pa.dragTo()
pa.dragRel()

スクリーンショット

ss =pa.screenshot()

画像を認識して場所を返してくれる

スクリーンショットやsnipping toolで認識したい物を用意

今回はゴミ箱をgomi.pngとして保存しておく。

スクリーン上から画像と一致する位置を返す

list(pa.locateAllOnScreen('gomi.png'))
[Box(left=16, top=4, width=65, height=81)]

画像で認識したものの中心位置を返す

pa.center(pa.locateAllOnScreen('gomi.png'))

中心を認識したらクリックと組み合わせればショートカットを実行できる

文字を打ち込む

画像認識で検索バーやメモ帳の位置を指定してからtypewrite

pa.leftClick()
pa.typewrite('HHH',1)

スケジュール実行する

import schedule
import time

def job():
    print("関数内にclickとか処理を入れる")

10分ごとにjob関数の操作を実行

schedule.every(10).minutes.do(job)

その他の指定

#一時間おき
schedule.every().hour.do(job)
#毎日10:30になったら
schedule.every().day.at("10:30").do(job)
#月曜になったら
schedule.every().monday.do(job)
#曜日・時間指定
schedule.every().wednesday.at("13:15").do(job)

スケジュール実行を停止

schedule.run_pending()

以上

hotkeyとしてshift長押しやwindowsボタンを押す事もできる

PyAutoGUI’s documentation
schedule doc