1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonとPyAutoGUIで始める画面操作の自動化

Posted at

PyAutoGUIは、Pythonから**マウスの操作(移動、クリック、ドラッグ)やキーボードの操作(キー入力、タイピング)**を自動化できるライブラリです。APIが公開されていないデスクトップアプリや社内システムなど、画面上でしか操作できないソフトウェアに対して、繰り返し行う必要がある操作を自動化するのに役立ちます。PyAutoGUIはWindowsとMacの両方で利用でき、コードも比較的簡単なため、自作の業務効率化ツールを作成するのに適しています。

PyAutoGUIの基本的な使い方

事前準備

まず、PyAutoGUIをインストールする必要があります。ターミナルまたはコマンドプロンプトで以下のコマンドを実行します。

pip install pyautogui

Macの場合は、システム設定の「プライバシーとセキュリティ」から「アクセシビリティ」を開き、コードを実行しているツール(例:VS Code)のコンピューター制御を許可する必要があります。

マウス操作

マウスカーソルの移動

マウスカーソルを移動させるには、pyautogui.moveTo(x座標, y座標)を使用します。座標は画面の左上が(0, 0)となり、x座標が横軸、y座標が縦軸です。

import pyautogui

pyautogui.moveTo(150, 100)

このコードを実行すると、マウスカーソルが(150, 100)の位置に移動します。

クリック

クリックを行うには、pyautogui.click()を使用します。現在のマウスカーソル位置でクリックします。座標を指定してクリックすることも可能です。

pyautogui.click()  # 現在位置でクリック
pyautogui.click(x=100, y=200) # (100, 200)の位置へ移動してクリック

右クリック

右クリックを行う場合は、click()関数のbutton引数に'right'を指定します。

pyautogui.click(button='right')

ドラッグ

ドラッグ操作には、pyautogui.dragTo(x座標, y座標, duration=秒数, button='ボタンの種類')を使用します。moveTo()で開始位置に移動後、dragTo()で指定した座標までドラッグします。durationでドラッグの速度、buttonでドラッグ中に押すマウスボタン(例:'left')を指定できます。

pyautogui.moveTo(200, 200)
pyautogui.dragTo(300, 200, duration=1, button='left')

キーボード操作

キーを押す

特定のキーを押すには、pyautogui.keyDown('キー名')を使用します。例えば、Enterキーを押す場合は以下のようになります。

pyautogui.keyDown('enter')

タイピング

文字を入力するには、pyautogui.typewrite('文字列')を使用します。

pyautogui.moveTo(200, 200)
pyautogui.click()
pyautogui.typewrite('Hello')

日本語を入力する場合pyautogui.typewrite()ではうまくいきません。代わりに、pyperclipライブラリーを使ってクリップボードに文字をコピーし、pyautogui.hotkey()で貼り付け(Ctrl+VまたはCmd+V)を実行します。pyperclipはPyAutoGUIインストール時に同時にインストールされます。

import pyperclip
import pyautogui

pyperclip.copy('こんにちは')
pyautogui.hotkey('ctrl', 'v') # Windowsの場合
# pyautogui.hotkey('command', 'v') # Macの場合

具体的な利用ケース:近体システムへの社員情報登録の自動化

人事部から送られてくるCSVファイル(社員番号、氏名、雇用形態)をもとに、Webベースの近体システムに社員情報を登録する作業を自動化するシステムには、一括アップロード機能やAPIがないため、手作業でコピー&ペーストを繰り返す必要がありました。
これを自動化のスクリプトとして、以下の手順で進めていきましょう。:

  1. pandasライブラリーでCSVファイルを読み込みます。
  2. 読み込んだデータを1行ずつ処理するループを作成します。
  3. 各行の雇用形態に応じて、画面上の該当するラジオボタンをクリックします (pyautogui.click())。
  4. 社員番号のテキストボックスをクリックし (pyautogui.click())、pyperclip.copy()で社員番号をクリップボードにコピーした後、pyautogui.hotkey('ctrl', 'v')で貼り付けます。
  5. 同様に、氏名のテキストボックスをクリックし (pyautogui.click())、pyperclip.copy()pyautogui.hotkey('ctrl', 'v')で氏名を貼り付けます。
  6. 登録ボタンをクリックします (pyautogui.click())。
  7. 登録完了のポップアップが表示されたらOKボタンをクリックします (pyautogui.click())。

この例では、繰り返し行う必要のある画面操作を自動化することで、大幅な時間短縮と正確性の向上が期待できます。

注意点として、自動化プログラムが実行中はマウスカーソルがプログラムに制御されるため、基本的にPC上で他の作業は行わない方が良いとされています。

参照動画

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?