ノンプログラマーのためのPython学習サイト

PyautoGUIを使った、マウス・キーボード操作を自動化する方法

困っている人

  • PyAutoGUIとはどういうものか。RPA、VBA・マクロとの違いを知りたい。
  • PyAutoGUIでマウス・キーボード操作を自動化する方法を教えてほしい。
この記事で解決できること
  • PyAutoGUIとRPA、VBA・マクロとの違いを知ることができます。
  • マウス・キーボード操作を自動化する方法が分かります。

 PyAutoGUIとは

PyAutoGUIとはPythonライブラリの1つで、マウスやキーボード操作を自動化できるツール(無料)のことです。Windows、macOS、Linuxで動作します。

具体的には、マウスを自動操作してアプリケーション(Excelなど)ファイルを開いたり、キーボードを自動操作して数値や文字を入力することができます。

また、事前に用意した画像がデスクトップ上にあるかどうか認識させ、クリックなどの指示も可能です。

  1. マウス操作クリック操作・・・ドラッグ操作、スクロール操作など
  2. キーボード操作・・・タイピング、ファンクションキー入力、ショートカット入力
  3. 画像認識・・・指定した画像を認識し、クリック操作等の指示が可能

PyAutoGUIを使えば人間よりも何倍も速く正確に、ルーチン業務を処理することができます。

PyAutoGUIとは|RPA、VBA・マクロとの違い

RPAとは

RPAとはロボティック・プロセス・オートメーションの略で、ロボットによる業務の自動化を表す言葉です。

基本的には、PyAutoGUIと同じで、マウスやキーボード操作を自動化できるのですが、プログラミングの知識がなくても動かせる点が特徴です。

ただし、導入規模に応じて費用が高額になってしまうところがネックです。

WinActorの場合(年間費用)

  • 開発者ライセンス:90万8000円/1台
  • 実行ライセンス:24万8000円/1台
  • 管理ツール:228万円

VBA・マクロとは

VBA(Visual Basic for Applications)とは、Excel、Access、Wordなどのオフィスソフトにおいて、プログラミング言語のVisual Basicの簡易版を使って、複雑な処理でも自動化できる点が特徴です。

ただし、オフィスソフトでしか動作しません。

PyAutoGUIのメリット

PyAutoGUIはデスクトップ上で様々なアプリケーション(オフィスソフトを含む)をまたぐ操作が可能で、RPAに近い機能を持っています。

プログラミング言語Pythonを覚える必要がありますが、無料で使えるというメリットがあります。

実行環境について

注意点としては、クラウド型のプログラミング実行環境であるGoogle Colab(グーグルコラボ)では動作しません

ローカル型のプログラミング実行環境であるJupyterNotebook(ジュピターノートブック)をダウンロードする必要があります。

PyAutoGUIの基本操作

具体例として商品マスタ(Excel)の作成を紹介しますが、下記の8種類の基本的な構文を使用しています。

PyAutoGUIの基本操作一覧表

No. 基本的な構文 説明
1 pg.position() 現在のマウスの座標(x,y)を取得
2 pg.moveTo(x=100, y=200, duration=1) 指定の座標(x=100,y=200)まで、1秒でマウスを移動
3 pg.click(x=100, y=200, button=’left’) 指定の座標(x=100,y=200)で、1マウスを左クリック
4 pg.doubleClick(x=200, y=100) 指定の座標(x=100,y=200)で、ダブルクリック
5 sleep(3) 3秒間待機
6 pg.typewrite(‘excel’, 0.1) 「excel」とタイピング(1文字0.1秒)
7 pg.hotkey(‘return’) 「returnキー」を入力
8 pg.hotkey(‘ctrl’,’space’) 「ctrlキー」と「spaceキー」を同時入力(英字とひらがなの切り替え)

PyAutoGUIを使った自動化の具体例

JupyterNotebookの実行環境を使ってマウス操作・キーボード操作を自動化し、商品マスタ(Excel)を作成します。

PyAutoGUIによる処理内容(プログラミングコード)の詳細

PyAutoGUIでコードを書く際には、座標を取得するのが面倒ですが、自動化の仕組みは単純です。

上記の8種類の基本的な構文だけで、自動実行のプログラミングコードの記述が可能です。

一見、コードが多くて難しそうに見えますが、ほとんどコピペなので簡単に作成できます。

ところどころに「sleep」を入れているのは、コンピューターの処理時間を確保して自動実行の安定化を図るためです。

プログラミングコード

#必要なライブラリのインポート
import pyautogui as pg
from time import sleep

#Excelの起動
pg.moveTo(x=1345, y=0, duration=1)
pg.moveTo(x=1345, y=12, duration=0.5)
pg.click(x=1345, y=12, button='left')
sleep(1)
pg.typewrite('excel', 0.1)
pg.hotkey('return')
sleep(3)
pg.moveTo(x=358, y=227, duration=1)
pg.doubleClick(x=358, y=227)
sleep(2)

#商品マスタの項目(列名)入力
pg.hotkey('ctrl','space')
pg.typewrite('syouhinnko-do\n')
pg.hotkey('tab')
pg.typewrite('syouhinnmei\n')
pg.hotkey('tab')
pg.typewrite('tannka\n')
pg.hotkey('return')

#商品コード入力
pg.hotkey('ctrl','space')
pg.typewrite('A001')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('A002')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('A003')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('A004')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('A005')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('A006')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('A007')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('A008')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('A009')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('A010')
pg.hotkey('return')
pg.hotkey('tab')
#商品名入力
for i in range(9):
    pg.hotkey('shift', 'return')
sleep(1)
pg.typewrite('rinngo')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('budou')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('banana')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('momo')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('nasi')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('mikann')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('mango-')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('meronn')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('itigo')
pg.hotkey('return')
pg.hotkey('return')
pg.typewrite('doriann')
pg.hotkey('return')
pg.hotkey('tab')
sleep(1)
pg.hotkey('ctrl','space')
#単価の入力
for i in range(9):
    pg.hotkey('shift', 'return')
pg.typewrite('150')
pg.hotkey('return')
pg.typewrite('300')
pg.hotkey('return')
pg.typewrite('200')
pg.hotkey('return')
pg.typewrite('400')
pg.hotkey('return')
pg.typewrite('200')
pg.hotkey('return')
pg.typewrite('250')
pg.hotkey('return')
pg.typewrite('450')
pg.hotkey('return')
pg.typewrite('900')
pg.hotkey('return')
pg.typewrite('350')
pg.hotkey('return')
pg.typewrite('1000')
pg.hotkey('return')

#Excelファイルの保存
pg.moveTo(x=132, y=13, duration=1)
pg.click(x=132, y=13, button='left')
pg.moveTo(x=137, y=164, duration=1)
pg.click(x=137, y=164, button='left')
sleep(3)
pg.hotkey('ctrl','space')
pg.typewrite('syouhinnmasuta')
pg.hotkey('return')
pg.moveTo(x=347, y=257, duration=1)
pg.click(x=347, y=257, button='left')
sleep(1)
pg.hotkey('return')
sleep(1)
pg.moveTo(x=67, y=14, duration=1)
pg.click(x=67, y=14, button='left')
pg.moveTo(x=82, y=216, duration=1)
pg.click(x=82, y=216, button='left')

PyAutoGUIのまとめ

Excel操作の自動化だけならVBA・マクロでも実現できますが、PyAutoGUIではExcel操作だけでなく、様々なアプリケーションをまたぐ操作が可能なため汎用性の高いツールです。

プログラミング言語Pythonを習得すれば無料で利用できるので、是非マウス・キーボード操作の自動化を試してみてください。

Pythonを勉強したいけど、いきなり数十万円もするプログラミングスクールに申し込む勇気がない。低価格で始められる、初心者にオススメなPython学習サイトが知りたい方は、Python学習サイトまとめを参考にしてください。