こんにちは、挑戦するエンジニア のり ですよ。
パソコンで同じ操作を毎日のようにする作業ってありませんか?
そんな作業を、誰かに代わってもらえるとしたら、助かりますよね。
今回は、そんな作業の自動化に役立つライブラリ「PyAutoGUI」の使い方をサンプル付きで解説します。
始めに
この記事では、PythonのライブラリPyAutoGUIの使い方を解説しています。
この記事を読んでいただくことで、PythonのPyAutoGUIを使った画面操作を自動化するプログラムを作るための基本を知っていただくことができます。
ぜひ、挑戦してみてください!
PyAutoGUIで出来ること
まず、PyAutoGUIを使って出来ることを紹介します。
PyAutoGUIを使って出来ることは、大きく分けて3つあります。
・マウスを操作する
・キーボードを操作する
・その他の機能
1つ目の「マウス操作」は、画面上の指定の座標でクリックしたりドラックしたりできます。
しかもクリックは、左クリック、右クリック、ダブルクリックとクリックの仕方を選べます。
・左クリックができる
・右クリックができる
・ダブルクリックができる
2つ目の「キーボード操作」は、キーボードを操作します。
キーを1つ押すだけでなく、CtrlキーやShiftキーを組み合わせ、押したりすることができます。
・キーを組み合わせて押せる
3つ目の「その他の機能」は、操作中のスクリーンショットを撮ったり、
プログラムを停止させる安全装置を付けられる機能を紹介します。
自動化のプログラムにあると便利な機能です。
・スクリーンショットを撮れる
・安全装置を付けられる
次は、PyAutoGUIを使う前にする準備です。
PyAutoGUIを使う準備
PyAutoGUIを使うには、ライブラリのインストールが必要です。
ライブラリのインストール
早速、ライブラリのインストール手順を紹介します。
まずは、コンソールからpipコマンドのアップデートを行うコマンドを入力します。
ちなみにコンソールは、「コマンドプロンプト」か、
Windows11では「ターミナル」がおすすめです。
Visual Studio Codeの「ターミナル」からも実行可能です。
python -m pip install --upgrade pip
続いて、PyAutoGUIをインストールします。
python -m pip install pyautogui
PyAutoGUIで日本語の入力を自動化する場合、「pyperclip」というライブラリが必要です。
ついでにインストールしておきます。
PyAutoGUIをインストールしたときに、一緒にインストールされていれば飛ばしても問題ありません。
python -m pip install pyperclip
PyAutoGUIでスクリーンショットを撮る場合、「pillow」というライブラリが必要です。
ついでにインストールしておきます。
python -m pip install pillow
pipコマンドの使い方については、次の記事を参照してください。
Anacondaをインストールされている方は、pipコマンドではなくcondaコマンドを使いましょう。
次は、マウス操作のコーディングの仕方を解説します。
PyAutoGUIでマウス操作
PyAutoGUIを使って、マウスで操作したようにパソコンを操作できます。
早速、コーディングのサンプルを見ていきましょう。
左クリック
命令が実行されると、左クリックします。
サンプルでは、画面の座標xが200、座標yが100の位置を
左クリックします。
"""puautogui sample01 左クリック
"""
import pyautogui as p
# 座標(x=200, y=100)を左クリックする。
p.leftClick(200, 100)
ちなみに、座標は画面左上が(x=0. y=0)です。
画面、右に行くにつれてxの値が、下に行くにつれてyの値が増加します。
右クリック
命令が実行されると、右クリックします。
サンプルでは、画面の座標xが200、座標yが100の位置を
右クリックします。
"""puautogui sample02 右クリック
"""
import pyautogui as p
# 座標(x=200, y=100)を右クリックする。
p.rightClick(200, 100)
ダブルクリック
命令が実行されると、ダブルクリックします。
サンプルでは、画面の座標xが200、座標yが100の位置を
ダブルクリックします。
"""puautogui sample03 ダブルクリック
"""
import pyautogui as p
# 座標(x=200, y=100)をダブルクリックする。
p.doubleClick(200, 100)
ドラッグ
命令が実行されると、ドラッグ(マウスをクリックしたまま移動)します。
サンプルでは、画面の座標xが200、座標yが100の位置から始まって
座標xが400、座標yが200の位置まで10秒かけて、ドラッグします。
"""puautogui sample04 ドラッグ
"""
import pyautogui as p
# 座標(x=200, y=100)でマウスのボタンを押す
p.mouseDown(200, 100)
# 現在の座標からx軸+200、y軸+100)まで、10秒かけてマウスをドラック
p.drag(200,100,10)
# マウスのボタンを離す
p.mouseUp()
画像と同じ表示位置を探す(ボタン認識)
命令が実行されると、画像ファイルが存在するかチェックします。
存在する場合、画面上で画像と同じ表示位置の真ん中の座標を返します。
サンプルでは、ボタンの画像から座標位置を特定して、左クリックします。
"""puautogui sample05 画像の場所を探して左クリック
"""
import pyautogui as p
# 画像の場所を探して、画面上で一致する真ん中を左クリックする。
x, y = p.locateCenterOnScreen('button.png')
p.leftClick(x, y)
画面上で画像と同じように表示されている箇所を探してくれます。
次は、キーボード操作のコーディングの仕方を解説します。
PyAutoGUIでキーボード操作
続いてPyAutoGUIを使って、キーボードで操作したようにパソコンを操作できます。
早速、コーディングのサンプルを見ていきましょう。
指定のキーを押す
命令が実行されると、指定のキーを押します。
サンプルでは、ファンクションキーのF1ボタンを押します。
"""puautogui sample06 指定のキーを押す
"""
import pyautogui as p
# ファンクションキーのF1を押す
p.press('f1')
指定の文字列を入力する
命令が実行されると、指定のキーを順に押し
その後、押した順とは逆に、はなしていきます。
サンプルでは、[Windowsキー] + [e]を押します。
"""puautogui sample07 指定のキーを順に押す(はなすときは逆順)
"""
import pyautogui as p
# windwosキー+eを押す
p.hotkey('win','e')
[ctrl] + [c]、[alt] + [F4]など、様々なキーを組み合わせて
押すことができます。
ただし、[ctrl] + [alt] + [delete]は機能しないようです。
"""puautogui sample08 指定のキーを順に押す(はなすときは逆順)
"""
import pyautogui as p
# ctrl+alt+delを押す(使えない)
p.hotkey('ctrl','alt','del')
PyAutoGUIでは[ctrl] + [alt] + [delete]は、操作できません。
特殊キーの指定方法
参考に、アルファベット以外のキーの指定方法を紹介しておきます。
キーの種類 | 指定する値 |
ESCキー | esc |
Ctrlキー | ctrl |
Enterキー | enter |
Shiftキー | shift |
Tabキー | tab |
Windowsキー | win |
Insertキー | insert |
Deleteキー | del |
Homeキー | home |
カーソルキー上 | up |
カーソルキー下 | down |
カーソルキー左 | left |
カーソルキー右 | right |
スペースキー | space |
BackSpaceキー | backspace |
ファンクションキー | f1、f2、f3 ・・・ |
次は、日本語を入力させるコーディングの仕方について解説します。
PyAutoGUIで日本語入力
PyAutoGUIを使って、日本語を入力したように操作できます。
正確に言うと、日本語をクリップボード経由で貼り付けることになります。
日本語の入力(貼り付け)
命令が実行されると、日本語をクリップボード経由で貼り付けます。
サンプルでは、「入力させたい日本語!」という文字列を貼り付けます。
"""puautogui sample09 日本語を入力する
"""
import pyautogui as p
import pyperclip as c
# 入力させたい日本語をクリップボードにコピー
c.copy('入力させたい日本語!')
# キーボードを操作して貼り付け
p.hotkey('ctrl','v')
クリップボードの内容が更新されるので注意が必要です。
次は、PyAutoGUIで便利な機能を紹介します。
PyAutoGUIで便利な機能
プログラムで自動的にどんどん操作をしていくと、あったら便利だなと思う機能があります。
そんな機能で、使えそうなものを紹介します。
プログラムを指定した時間停止する
命令が実行されると、引数に指定した秒数だけプログラムが停止します。
"""puautogui sample10 指定の秒数プログラムを停止
"""
import pyautogui as p
# 15秒間プログラムを停止する
p.sleep(15)
操作と操作の間で、少し待ちたいときに便利です。
ボタンを押して、アプリの起動を待つなど、処理が実行されるのを待つことができます。
スクリーンショットを撮る
命令が実行されると、スクリーンショットを撮ります。
サンプルでは、指定した名前「ss01.png」でスクリーンショットを保存しています。
"""puautogui sample11 スクリーンショットを取得
"""
import pyautogui as p
# スクリーンショットを取得
p.screenshot('C:\\Python\\data\\ss01.png')
拡張子は、「.png」や「.jpg」が使えます。
自動化プログラム実行中に、操作の状態をスクリーンショットで残しておくことが出来ます。
安全装置(fail-safe機能)
命令が実行されると、マウスカーソルの位置をチェックし画面四隅のどこかにあると、エラーが発生しプログラムを異常終了させます。
サンプルでは、異常終了させるかチェックしてます。
"""puautogui sample12 画面左上にマウスを置いておくと
異常終了する(安全装置)
"""
import pyautogui as p
# 異常終了するかチェックする(安全装置)
p.failSafeCheck()
マウスカーソルが画面四隅のどこかにある状態で実行すると、異常終了します。
異常終了のタイミングを作ることで、プログラムの暴走を防ぐことができます。
ちなみに、マウス操作やキーボード操作前に、マウスを画面四隅のどこかへ移動させると、fail-safe機能が働きプログラムは異常終了します。どのタイミングで異常終了させられるかは、プログラムを使う前にチェックしておいたほうがよいでしょう。
カウントダウン
命令が実行されると、カウントダウンを行います。
サンプルでは、コンソールに「5 4 3 2 1」と一秒ことにカウントダウン表示します。
"""puautogui sample13 コンソールで指定秒数カウントダウン
"""
import pyautogui as p
# コンソールで5秒カウントダウン
p.countdown(5)
まとめ
今回は、PythonのライブラリPyAutoGUIの使い方を解説しました。
マウス、キーボードの操作を自動化して、様々な作業をプログラムにさせることが出来るようになると思いませんか?
ぜひ、紹介した操作を組み合わせて、自動化プログラムを作ってみてください。
うまくいけば、作業をプログラムにやってもらうことが出来ます。
PyAutoGUIを使うことで、仕事を効率化し、みなさんの作業が少しでも楽になるように願っています。
それでは、今日の解説はこのへんで。
またのお越しをお待ちしております。