【PyAutoGUI】手軽にRPAツールを作ろう!

2023年10月22日

広告を含みます





ライブラリの準備

まずはPyAutoGUIを利用するための準備をします。

インストール

PyAutoGUIのインストールは以下のコマンドです。

pip install pyautogui

もし画像認識の機能も使いたい場合はOpenCVもインストールしてください。

pip install opencv-python

インポート

インポートはimport pyautoguiで実行できます。

想定外の動きをしたとき、マウスカーソルを画面の左上隅に移動させて緊急停止させる機能も一緒に実行しておきます。

import pyautogui
pyautogui.FAILSAFE = True

ちなみに画像認識を使いたい場合にOpenCVをインストールしますが、import pyautoguiで一緒にインポートされますのでimport cv2の実行は不要です。

待機時間の設定

各操作の間で一定時間待つ操作もさせたい場合はtimeライブラリをインポートします。

標準ライブラリなのでインストール作業は不要です。

import time

以下のような使い方をします。

time.sleep(5)  # 5秒間待機

マウス操作

基本操作の1つ、マウス操作の方法を解説します。

カーソル座標取得

マウスの操作は”どこを”クリックするかが重要です。

以下のコードで、現在のマウスカーソルの座標を取得しながらプログラムを作成します。

x, y = pyautogui.position()
print(x, y)

カーソル移動

指定の座標にマウスカーソルを移動できます。

実際はクリック操作で座標移動操作も含めて実行できるため、利用頻度は少なめです。

pyautogui.moveTo(200, 200, duration=1)  # x=200, y=200の位置に1秒かけて移動

現在の位置から相対的に座標移動させることも可能です。

pyautogui.moveRel(20, 10, duration=1)

クリック操作

pyautogui.click(200, 200)  # x=200, y=200の位置でクリック

指定の時間が経ってからクリックさせる場合にはdurationを指定します。

指定の座標に設定した時間をかけて移動させてからクリックします。

pyautogui.click(x=200, y=200, duration=1) # x=200, y=200の位置へ1秒かけて移動してからクリック

ダブルクリックはdoubleClick関数を使います。

pyautogui.doubleClick(x=200, y=200) # x=200, y=200の位置でダブルクリック
pyautogui.doubleClick(x=200, y=200, duration=1) # x=200, y=200の位置へ1秒かけて移動してからダブルクリック

右クリックはrightClick関数を使います。

pyautogui.rightClick(x=200, y=200) # x=200, y=200の位置で右クリック
pyautogui.rightClick(x=200, y=200, duration=1) # x=200, y=200の位置へ1秒かけて移動してから右クリック

ドラッグ

ドラッグはdragTo関数を使ってクリックと同様に実行できます。

pyautogui.dragTo(200, 200) # x=200, y=200の位置へドラッグ
pyautogui.dragTo(200, 200, duration=1) # x=200, y=200の位置へ1秒かけてドラッグ

スクロール

画面のスクロールも出来ます。

引数に入れる数字はプラス値が上スクロール、マイナス値が下スクロールです。

pyautogui.scroll(10)

キーボード操作

もう1つの基本操作であるキーボード操作の方法を解説します。

文字入力

基本操作である文字入力はwrite関数を使います。

pyautogui.write('Hello, World!')

各文字の入力間の遅延を設定することも出来ます。

pyautogui.write('Hello, World!', interval=1) # 各文字を入力する間に1秒の遅延が発生

特定のキーを押す

pyautogui.press('enter') # Enterキーを押す

複数キー同時押し

特定のキーを複数同時に押してショートカットキーを活用することも可能です。

pyautogui.hotkey('alt', 'f4') # 画面を閉じるショートカットキー

長押し

キーを押しっぱなしにする場合はkeyDown関数を使います。

操作を終える時は必ずkeyUp関数を忘れないでください。

pyautogui.keyDown('enter') # エンターキーを押しっぱなしにする
time.sleep(2)  # 2秒待つ
pyautogui.keyUp('enter') # エンターキーを離す

有用な機能

マウスやキーボード操作以外にも様々な機能があります。

特に使うものをピックアップしてしま紹介します。

スクリーンショット

実はスクリーンショットも撮れます。

screenshot = pyautogui.screenshot('screenshot.png')

撮影範囲も選択できます。

screenshot = pyautogui.screenshot('screenshot.png', region=(200, 100, 300, 400))

例ではスクリーン上の(200, 100)の位置から右に横幅300ピクセル、下に縦幅400ピクセルの範囲のスクリーンショットを取得しています。

画像認識

段階的な動作をさせる時、1つ前の動作が完了したことを自動で検出しなければなりません。

1つの方法としてtime.sleep関数で時間による管理をすることです。

ただし待機時間で制御する場合、待機時間以上に処理時間がかかった時、以降の動作が正しく処理できない危険性があります。

対策として指定したウィンドウやダイアログが存在するかどうかを監視する方法が考えられます。

PyAutoGUIには直接的なウィンドウやダイアログの検出機能はありませんが、画像認識で特定のボタンやテキストが表示されているか検出できます。

image = 'image_path.png' # 認識したい画像のパス
location = pyautogui.locateOnScreen(image, confidence=0.8)

この方法は特定の画像を正確に検出する必要があるため、画面の解像度や明るさ、色調などの条件によってはうまく機能しないことがあります。

認識がうまくいかない場合はconfidenceを調整することで一致度合いを厳しくしたり緩くしたりできます。

この機能を利用して、例えば”Excelが起動するまで待つ”ような操作が出来ます。

監視する画面
image = 'image_path.png' # 認識したい画像のパス
while True:
        location = pyautogui.locateOnScreen(image, confidence=0.8)  # confidenceは画像の一致度合い
        if location is None:  # 画像が検出されない場合、起動が終了したと判断
            break
        time.sleep(2)  # 2秒ごとに画像を検索

アプリやブラウザを起動

PCのアプリケーションやブラウザを起動することも出来ます。

Windowsキー+" r ”で実行するプログラムを指定する機能を活用します。

Windows + r で表示される画面
pyautogui.hotkey('win', 'r')
pyautogui.write('chrome')  # Google Chromeを起動する場合
pyautogui.press('enter')

ちなみにosライブラリでも実行できます。

import os
os.system('notepad.exe') # メモ帳を起動する場合

これらの方法を使用して、必要なアプリケーションやツールを起動することができます。

ただし、起動するアプリケーションのパスやコマンド名を正確に知っている必要があります。

注意点

PyAutoGUIを使うと本物のキーボードやマウス操作をシミュレートします。

それも踏まえ注意点をお伝えします。

他の操作はしないように

このライブラリはあくまでリアルなマウスやキーボードを操作していることになります。

スクリプトを実行している間は、他の操作をしないように注意してください。

緊急時の停止機能を設けておく

予期しない動作を防ぐために、内蔵されているフェールセーフ機能を使うことを推奨します。

これは、マウスカーソルを画面の左上隅に移動させることで、自動操作を緊急停止させる機能です。

インポートと一緒に実行しておくのを推奨します。

import pyautogui
pyautogui.FAILSAFE = True

参考資料

PyautoGUI公式ドキュメント

オススメ書籍

・Python1年生

コードを書くときにどうしても最低限の知識は必要になります。
Pythonの基礎を学びたいときはこの書籍から始めるのがオススメです。
丁寧な表現で導入に向いています。

Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ
Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ

www.amazon.co.jp

・化学のためのPythonによるデータ解析・機械学習入門

データ分析に必要な最低限の知識を解説したうえで、化学プラントで得られるデータの扱い方が紹介されています。
脱ブタン塔や排煙脱硝装置を例に取り上げられておりイメージしやすくなっています。

化学のためのPythonによるデータ解析・機械学習入門
化学のためのPythonによるデータ解析・機械学習入門

www.amazon.co.jp

・Pythonによる時系列分析: 予測モデル構築と企業事例

プロセス製造において時系列データの分析は欠かせません。
どのように時系列予測モデルを構築し、ビジネスへ活用していくかを詳細なPythonコードとともに解説してくれます。

Pythonによる時系列分析: 予測モデル構築と企業事例
Pythonによる時系列分析: 予測モデル構築と企業事例

www.amazon.co.jp







記事への問い合わせはこちら

-業務効率化
-