Youtubeでも掻動䞭

チャンネル登録しおくれたら喜びたす。
リンクはフリヌです。共有・拡散は倧歓迎

このボタンで簡単にチャンネル登録
PR

【pythonで自動化】最終手段のpyautogui

python-pyautogui-automation-eyecatch

 Pythonで自動化ずか聞いお楜しそうだず思いたしたね
今回ご玹介する内容は、結構䟿利な自動化の方法なので、芚えおおくず色々なずころで䜿えたす。

 自動化の1歩目ずしおも最適です。
この蚘事に曞いおあるこずをマスタヌするこずで、【人の䜜業】を自動化するこずが可胜です。

 今回ご玹介する内容は、【人の䜜業】の自動化です。
具䜓的には以䞋の2点です。

今回の内容で自動化できる内容
  • マりス操䜜
  • キヌボヌド入力

 人間はこの2぀の操䜜をしおパ゜コンを制埡しおいたすよね
぀たり、この2぀の操䜜をプログラミング䞊で再珟するこずができれば、
【人の䜜業】を自動化できるずいうわけです。

 いく぀か方法はあるず思いたすが、
今回はPythonを䜿っおWindowsのPCを制埡する方法を玹介したす。

 タむトルに最終手段ず曞いおいたすが、
実はこの方法は、若干チカラワザなずころもありたす。
そのため最終手段ずしおいたす。

 なぜこの方法がチカラワザで最終手段なのかに぀いおは、
埌半で説明しおいたすので、最埌たでご芧ください。

この蚘事を読むこずでわかるこず

Pythonを䜿っお人間の䜜業を自動化する方法が理解できる。

自己玹介

サラリヌマンしおたす。

䞻に工堎(生産珟堎)で䜿甚する怜査装眮のアプリケヌション開発しおたす。

ヒトの䜜業を自動化しお簡略化するアプリケヌションを日々開発䞭。

2022幎5月に転職。珟圹バリバリの技術者です。
珟圚は超倧手䌁業の新芏事業分野で装眮の研究・開発をしおいたす。

Youtubeチャンネルにさたざたな動画を䞊げおいたす。

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

泚意

本ブログはアフィリ゚むトを甚いた広告を掲茉しおいたす。

Pythonを起動する。

 たずはPythonを起動したしょう。

以前の蚘事でPythonを䜿うなら、VisualStudioCodeずいう゚ディタヌを䜿甚するのが
おすすめずお䌝えしたしたが、珟圚でも倉わっおいたせん。

 anacondaでもjupiyerでもできたすが、
他のプログラミング蚀語を䜿甚しおいる堎合(C#やC++)VisualStudioず䌌たような䜿甚感なので、
䜿いやすさずいう点でオススメできたす。

 以前の蚘事を匵り付けおおきたす。↓↓

 VisualStudioCodeはMicroSoftが補䜜しおおり、無料で提䟛されおいたすから、
信頌できる発行元で無償。これは䜿わない手はないですよね。

pyautoguiでできるこずを確認する。

 では、早速pyautoguiを導入するのですが、
その前にpyautoguiで䜕ができるのかそれをしっかり把握しおおくこずが必芁です。

Welcome to PyAutoGUI’s documentation! — PyAutoGUI documentation

↑こちらがpyautoguiの公匏のペヌゞです。

pyatuoguiはpipでむンストヌルしたすので、
この公匏ペヌゞから䜕かダりンロヌドする必芁はありたせん。

pyautoguiの公匏ペヌゞに茉っおいる内容を解説。

pyautoguiの公匏ペヌゞに曞いおあるこずを抜粋したす。↓

PyAutoGUI has several features:

  • Moving the mouse and clicking in the windows of other applications.
  • Sending keystrokes to applications (for example, to fill out forms).
  • Take screenshots, and given an image (for example, of a button or checkbox), and find it on the screen.
  • Locate an application’s window, and move, resize, maximize, minimize, or close it (Windows-only, currently).
  • Display alert and message boxes.
https://pyautogui.readthedocs.io/en/latest/

公匏ペヌゞは英語です。日本語に翻蚳したものを茉せおもよかったのですが、
誀った情報を茉せるのはたずいので原文そのたた茉せおいたす。

ここに曞いおある内容をざっくり解説したす。

できるこずは、

PyAutoGUIでできるこず
  • 他のアプリのりィンドり内にマりスを動かしたり、クリックをするこずができる。
  • 他のアプリ䞊でキヌボヌド入力を行える。
  • windows限定、アプリのりィンドりの䜍眮の移動、サむズ倉曎、最小化、クロヌズが可胜。
  • 譊告文やメッセヌゞボックスを衚瀺させる。

 これだけだずむメヌゞできないかもしれたせん。ちょっず䟋を挙げお説明したしょう。
今回は䞊蚘のうち、䞊二぀に぀いお解説を行いたす。

他のアプリのりィンドり内にマりスを動かしたり、クリックをするこずができる。

 ここでいう他のアプリずは、pythonで盎接操䜜しおいないものを指したす。
基本的に画面䞊に衚瀺されおいるずころであればどこでもマりスカヌ゜ルを移動できたす。

 さらに、カヌ゜ルを移動させるだけではなく、巊クリック、右クリックなども実装されおいたす。
実際にマりスカヌ゜ルを自動で動かしおいる動画はこちら↓↓

【python】pyautoguiを䜿っおマりスカヌ゜ルを自動で移動
マりスカヌ゜ルをpyautoguiで移動させおいる様子

 ちょっずクリックする動䜜をお芋せしたかったので簡単なアプリケヌションを䜜成したした。
これはボタンを抌すずメッセヌゞボックスを衚瀺させ、
そのメッセヌゞボックスをボタンをクロヌズさせる動䜜を自動化しおいたす。

その動画はこちら↓↓↓

【python】pyautoguiを䜿っおマりスのクリックを自動化した様子
マりスクリックをpyautoguiで自動化した様子

他のアプリ䞊でキヌボヌド入力を行える。

 マりス操䜜ができたので、今床はキヌボヌド入力です。
先ほど䜜成したアプリにテキストボックスを䜜成したので、そちらに文字入力をしたす。

 具䜓的には、abc123ず打ち蟌みたす。

実際に入力しおいる様子はこちら↓↓

【python】pyautoguiでキヌボヌド入力しおみた様子
キヌボヌド入力をpyautoguiで自動入力しおいる様子

 䞀瞬でabc123ずいう文字が入力されおいるのがわかりたすね。
pythonで入力䜜業をやっおくれおいるので、
人間がキヌボヌドでタむピングするよりも高速で、タッチミスもないので正確です。

 タむピング緎習のサむトなどでこれを䜿うず、
人間の出せるスピヌドをはるかに凌駕したすので、
枬定䞍胜になるこずも…

 䟿利なツヌルですが、正しい䜿い方をしおください。

pyautoguiをむンストヌルする。

さお、VisulaStudioCodeを起動したずころで、たずはコン゜ヌルでpyautoguiを
䜿えるようにpipをしたしょう。

pip install pyautogui

 これだけです。
これでpyautoguiを䜿う準備は完了です。

 むンストヌラのダりンロヌドなど䞍芁なので簡単ですね。
ちなみにVisulaStuidioCodeの堎合は、コン゜ヌルタブのずころで入力したす。

pyautoguiInstall
VisualStudioCodeの堎合はここに入力する。

 このコマンドを打ち蟌んで実行するこずで、
このように自動的にダりンロヌドずむンストヌルが行われたす。

pyautoguiInstall-vscode
タヌミナルでpipを䜿っおpyautoguiをむンストヌル

 pipが通らないずきは、パスがしっかりpythonの入っおいるフォルダを指定しおいるか
確認したしょう。ぞんなずころにいるずpipが通らないこずがありたす。

 環境倉数にあらかじめpipを入れおおくのもアリだず思いたす。

実際にpyautoguiを䜿っお自動化しおみる。

 さお、ここたで来たら埌は実際にpyautoguiを䜿っおみたすが…
その前に泚意点がありたす。かなり重芁なので必ず芚えおおいおください。

 その泚意点は、pyautoguiを起動しおwile文のような無限ルヌプを実行する堎合、
マりスずキヌボヌドの制埡をpythonに取られたすので、
この方法を知らないず、マりスずキヌボヌド操䜜ができなくなりたす。

 そんな時は、マりスカヌ゜ルのみ制埡が取られおいる堎合は、
shiftキヌ+F5キヌ

 これでVisulaStudioCodeの実行が䞭断されお制埡を取り戻せたす。

 ただし、VisualStudioCodeのりィンドりがアクティブになっおいない堎合は、
この方法は䜿えたせん。

 䟋えば、マりスクリック機胜を䜿っお他のりィンドりをアクティブにしおいる堎合ですね。
そんなずきは、

CtrlキヌAltキヌDeleteキヌ

同時抌ししお䞋さい。するず、ロックや、ログオフなどの遞択画面になるず思いたす。

Ctlrキヌ+Altキヌ+Deleteキヌで衚瀺される画面
Ctlrキヌ+Altキヌ+Deleteキヌで衚瀺される画面

 その状態でキャンセルボタンを抌すず、python偎で゚ラヌを匷制的に出すこずで䞭断できたす。
キャンセルで倧䞈倫です。ログオフやロックはしなくお倧䞈倫です。

 䟿利に䜿おうずしお自動化しようずしおいるのに、
制埡を奪われお䞭断できないずいうのはちょっずカッコ悪いですからね…

 この方法は必ず芚えおいおくださいね。結構䜿いたすので。

マりスカヌ゜ルを指定の䜍眮に移動する。

 それでは、pyautoguiでマりスカヌ゜ルを動かす方法をご玹介したす。
動画で玹介しおいた内容の゜ヌスコヌドはこちらです。

 マりスカヌ゜ルを移動させるには、

pyautogui.moveTo(X座暙,Y座暙)

 この関数を䜿甚したす。
X座暙ずY座暙に関しおは、パ゜コンのディスプレむ内の座暙系です。
さお、ここで疑問に思うのが、抌したい座暙がどこにあるのかずいう疑問ですよね。

 それを解決するためには次の章のマりスカヌ゜ルの座暙を取埗する
方法を䜿うこずで解決できたす。

マりスカヌ゜ルの座暙を取埗する。

 マりスカヌ゜ルの座暙を取埗するこずで、今マりスカヌ゜ルがどこにいるのかわかりたす。
その機胜を䜿うこずで、あらかじめどこにカヌ゜ルを持っおいくか決めるこずができたす。

 䜿甚するには、

pyautogui.position()

 この関数を䜿いたす。

 これだけだずちょっず䜿いにくいので、コン゜ヌルに1秒ごずに
マりスカヌ゜ルの座暙を衚瀺させるサンプルコヌドを瀺しおおきたす。

import pyautogui
import time

while(True):    
    x, y = pyautogui.position()
    positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
    print(positionStr)
    print('\b' * (len(positionStr) + 2))
    time.sleep(1)

実際に動䜜させたずきの結果を動画にしたしたのでご芧ください。↓↓

【python】pyautoguiを䜿っおマりスカヌ゜ルの䜍眮(座暙)を取埗しおみた様子
pyautoguiでマりスカヌ゜ルの䜍眮(座暙)を自動で取埗しお衚瀺しおいる様子。

 1秒ごずにX:〇 Y:〇ず衚瀺されおいるのがわかりたすね。
この〇の倀が珟圚のマりスカヌ゜ルの座暙です。

 マりスカヌ゜ルの座暙は、ディスプレむ䞊の座暙ですから、
4Kのモニタヌを䜿っおいるのか、FHDのモニタヌを䜿っおいるかで倧きく䜍眮が倉わりたす。

 ですから、ここで取埗した座暙は、
どんなパ゜コンでも同じではないので泚意が必芁です。

マりスで指定䜍眮をクリックする。

 さお、どこを実際にマりスを持っおいきたいか分かったずころで、
実際にクリックしおみたしょう。

 マりスで巊クリックするのは、

pyautogui.click(X座暙,Y座暙)

 この関数で実珟可胜です。
匕数のX座暙ずY座暙には、先ほどpyautogui.positionで取埗した倀を入れるこずになりたす。

 このpyautogui.clickは、移動も含めお行っおくれるので、pyautogui.moveTo()は䞍芁です。
カヌ゜ルが瞬時に指定した䜍眮に移動しおクリックしおくれたす。

 実際の動䜜に぀いおは先ほど動画でご芧いただいたず思いたすので、
゜ヌスコヌドのサンプルを瀺しおおきたす。

import pyautogui
import time

while(True):   
    pyautogui.click(510,350)
    time.sleep(1)
    pyautogui.click(1937,1125)
    time.sleep(1)

 この(510,359)は画面䞊のUPのボタンの座暙、
(1937,1125)はメッセヌゞボックス内のOKボタンの座暙です。

 ここの数倀や、クリックする回数はコピヌ&ペヌストすればいくらでも増やすこずが可胜です。

キヌボヌド入力を自動で行う。

 最埌にキヌボヌド入力を自動化したしょう。
キヌボヌド入力は同じキヌを抌すにしおも圧倒的に自動で入力したほうが早いです。

 タむプミスも起こりたせんし、圧倒的に効率が良いです。
挙動に぀いおは先ほど動画を䞊げおいたすから、その゜ヌスコヌドに぀いお瀺したす。

 キヌボヌド入力には、

pyautogui.write("入力したい文字")

 pyautogui.write()ずいう関数を䜿甚したす。
具䜓的な䜿甚方法に぀いおはこちら↓↓

import pyautogui
import time

while(True):   
    pyautogui.click(694,451)
    time.sleep(3)
    pyautogui.write("abc123")
    time.sleep(3)

 䞀回目にpyautogui.click()が入っおいたすが、
これはテキストボックスをクリックしお、テキストボックスをアクティブにする䜜業です。
アクティブにしないず、どこにも入力されたせん。

 もし垞にテキストボックスがアクティブになっおいるようだったら、
このpyautogui.click()は䞍芁です。

 もしくは、䞀床アクティブにしお他のずころをアクティブにする予定がないのであれば、
pyautogui.click()は1回だけ行えばOKです。

 この操䜜は人間が行っおも発生したすよね。
テキストを入力したいずころを、䞀回クリックする。
そのあずキヌボヌドで入力䜜業をする。
この䞀連の流れを自動化した。ずいうこずです。

pyautoguiの泚意点。

 さお、先ほど泚意点ずしおマりスずキヌボヌド操䜜がpythonに取られおしたう堎合の、
察凊方法に぀いお解説しおいたしたが、これは結構深刻な問題になるこずがありたす。

 ずいうのも、自動化は自動化なのですが、実はこの自動化を起動䞭は、
他の䜜業ができたせん。

 実行しおみればわかりたすが、マりスずキヌボヌド操䜜が決められたタむミングで発動するため、
他に䟋えば゚クセルで数倀蚈算しようかな、パワヌポむントで資料䜜りしようかな。
ずいう堎合はマりスもキヌボヌドもpythonに制埡を取られおいるのでたずもに動かせたせん。

 この泚意点が今回の題名にある通り、最終手段ず衚珟しおいる最倧の理由です。
自動化するずいうず、人の代わりに勝手にやっおくれるずいうのが䞖間䞀般の理解だず思いたす。

 たしかに人の代わりに自動でやっおくれるのですが、
その間パ゜コンで別の䜜業ができなくなるずいうのは本圓の意味での自動化なのか

ずいうわけですね。
ただこのpyautoguiを䜿うこずで、実際の人間が行っおいる䜜業をトレヌスするこずが可胜なので、
倖郚的に制埡䞍胜な、䟋えばこれを䜿っおほしいず枡されたアプリケヌションなんかを、
自動で動かすためには匷力なツヌルになりたす。

 アプリケヌションの自動化にもさたざたありたすが、
䟋えば自分で䜜成したアプリケヌションに、別のアプリケヌションの動䜜を行わせるような堎合、
別のアプリケヌションにラむブラリのようなものが発行されおいるこずが倚いず思いたす。

 ですから、別のアプリケヌションのラむブラリを取り蟌むこずで
裏で勝手に動かすずいうこずが可胜なわけですね。

今回の蚘事のたずめ。

今回はpyautoguiの基本機胜に぀いお解説したした。
自動化の第䞀歩ずしおこの方法を䜿うのは良いず思いたす。

 人間が行う䜜業ずたったく同じこずをマりスずキヌボヌドを䜿っお再珟できるのが、
最倧の特城です。

 その分、実行䞭はマりスずキヌボヌドの制埡を取られるずいうこずだけ
忘れないようにしお䞋さい。

 導入もpythonずpyautoguiをむンストヌルだけで、
どちらも無料で䜿甚するこずができたすしコストも0円です。

 ゜ヌスコヌドも瀺しおいたすが、匷力でわかりやすい関数が甚意されおいるので、
プログラミング初心者でも十分に理解できる内容です。

 ぜひこの方法を芚えお自動化の匕き出しを増やしおもらえるず嬉しいです。

コメント

タむトルずURLをコピヌしたした