Python仕事術

Pythonで業務の自動化 (PyAutoGUIを使ってみる)

  • Pythonを使ってルーティン業務を自動化したい方
  • PyAutoGUIを使いたい方

日々のルーティン業務を自動化したい方にお勧めの記事になります。
本記事ではPythonを使ってPCを自動化する方法について紹介します。

巷ではRPA(ロボティック・プロセス・オートメーション)やRDA(ロボティック・デスクトップ・オートメーション)と呼ばれている手法になります。

プログラムに使うコードも非常に簡単で分かりやすいので初心者の方にもおすすめです。

目次
  • RPA(RDA)とは
  • RPAとWebスクレイピングの違い
  • PyAutoGUIとは(インストール方法)
  • デスクトップ画面の座標について
  • 最初の設定に使うコード
  • 各情報の取得に使う関数
  • マウス操作に使う関数
  • キーボード操作に使う関数
  • サンプルプログラム

RPA(RDA)とは

RPAとはロボティック・プロセス・オートメーションの略になります。

ロボットによる業務プロセスの自動化をする技術の一種で、その中でデスクトップPCの作業のみに絞った言い方がRDA(ロボティック・デスクトップ・オートメーション)になります。

本記事では一般的に有名なRPAという言い方で統一したいと思います。

RPAとWebスクレイピングの違い

WebスクレイピングもPCを自動的に動かして作業をするという意味では少し似ていますが

  • RPA
    マウス操作(カーソル移動やクリック)やキーボード操作を記録して自動で行う
  • Webスクレイピング
    Webブラウザ上のHTML構造を解析して情報を抽出

という違いがあります。

そのためWebスクレイピングでは自身のPCのデスクトップ画面に新しいファイルを作ったり、Excelやwordといったアプリケーションをコントロールすることができません。

その点、RPAはあくまでもマウスやキーボードの操作を記録して動かすため、Webブラウザだけでなくデスクトップ画面やExcelやwordといったアプリケーションもコントロールできます。

難点としては「Google Colaboratory」が使えません。

「Google Colaboratory」はGoogleアカウントがあればブラウザ上で簡単にPyhonコードを実行できる開発環境です。しかし、コードの実行場所がGoogleの仮想マシン上なので、いくら頑張ってコードを書いても動くのは自身のPCではなくGoogleの仮想マシンになります。

なので今回は「JupyterLab」を使っていきます。インストールはとても簡単です。インストールの方法は別ブログにて紹介しているので確認してみてください。

Pythonを使って仕事を楽に(Jupyter Labのインストール方法)

PyAutoGUIとは(インストール方法)

PyAutoGUIとは、マウスやキーボードの操作を自動化するPythonのライブラリです。Windows, macOS, Linuxで使用することができ、Python2, 3のどちらでも動かすことができます。

・PyAutoGUIのインストール

まずはPyAutoGUIライブラリを下記のコードでインストールします。

上記コードを実行すれば自身のPCに直接PyAutoGUIがインストールされるので以降PyAutoGUIを使用する時でも再実行は不要のコードになります。

始めて使う最初の一回目のみ使うコードです。

・インポート

インストールしたPyAutoGUIをインポートしてコードを使えるようにします。

このコードはPyAutoGUIを使用する場合、毎回最初に書かなければならないコードです。

これで、PyAutoGUIが使えるようになりました。

デスクトップ画面の座標について

本項目ではデスクトップ画面上の座標について解説していきます。

PyAutoGUIでRPAを行う際、カーソルの位置をデスクトップ画面上の座標で表します。

デスクトップ画面上で右クリックをして「ディスプレイの設定」を選択すると今使用している画面の解像度が確認できます。

私の環境では解像度が「1920×1080」となっており、これは横1920、縦1080の格子状にデスクトップ画面を分けることができます。

この格子状に表せるデスクトップ画面の一番左上を原点(0,0)とし、カーソルの位置を指定します。

また、複数のディスプレイを使っていても問題なくカーソル位置を指定できます。
3画面で真ん中のディスプレイがメンイ画面だった場合、下記の方の座標が設定されます。

最初の設定に使う関数

必要に応じてPyAutoGUIの設定をします。

  • ・FAILSAFF=True:カーソルを(0,0)座標に持っていくと緊急停止
  • ・PAUSE = 1.0:操作をした後の待機時間(1.0であれば1秒)

上記コードはなくても動きます。用途に応じて設定しましょう。

各情報の取得に使う関数

関数(引数) 内容
position() カーソルの現在位置を取得
pixel(X, Y) (X, Y)座標の色を取得
screenshot(“ファイル名.png” , region=(X① , Y① , X② , Y②)) スクリーンショットを取得 (座標で指示)
引数regionを指定しないと全画面

マウス操作に使う関数

関数(引数) 内容
click(X, Y , duration=カーソル移動にかける秒数) (X, Y)座標を指示して左クリック
引数の(X, Y)座標及びdurationを指定しない場合、その場で左クリック
doubleClick(X, Y , duration=カーソル移動にかける秒数) (X, Y)座標を指示してダブルクリック(左)
引数の(X, Y)座標及びdurationを指定しない場合、その場でダブルクリック(左) 
tripleClick(X, Y , duration=カーソル移動にかける秒数) (X, Y)座標を指示してトリプルクリック(左)
引数の(X, Y)座標及びdurationを指定しない場合、その場でトリプルクリック(左) 
rightClick(X, Y , duration=カーソル移動にかける秒数) (X, Y)座標を指示して右クリック
引数の(X, Y)座標及びdurationを指定しない場合、その場で右クリック
middleClick() (X, Y)座標を指示して中クリック
引数の(X, Y)座標及びdurationを指定しない場合、その場で中クリック 
scroll(スクロール量) スクロールする
-を付けると下へスクロールする
moveTo(X, Y , duration=カーソル移動にかける秒数) (X, Y)座標にカーソルを動かす
moveRel(±X , ±Y) 今の位置から指定マス分カーソルを動かす
dragTo(X, Y , duration=カーソル移動にかける秒数) (X, Y)座標までドラッグ
dragRel(±X , ±Y) 今の位置から指定マス分ドラッグ

キーボード操作に使う関数

関数(引数) 内容
write(“入力文字” , interval=入力秒数) 文字を打ち込む 半角英数字で指示する
入力秒数の指定は任意
press(“押したいキー”)  キー入力(押して離す)
keyDown(“押したいキー”) キーを押す
keyUp(“離したいキー”) キーを離す
hotkey(“押したいキー1” , “押したいキー2” ,・・・)  ショートカットキーを押す
各キーのコードでの表記は

・Ctrl=ctrl
・Enter=enter
・Alt=alt
・Esc=esc
・Shift=shift
・Tab=tab
・Backspace=backspace
・Delete=del
・方向キー=up,right,down,left
・F10=f10
hotkey(“ctrl” , “v”)  (例)貼り付け

サンプルプログラム

サンプルプログラムとしてメモ帳のアプリケーションに「Hello_world」と書き、ファイル名を付けて保存するプログラムを作成しました。参考にしていただければと思います。