Pythonで、作業の自動化ができる記事を読んでから、Pythonの学習をはじめました。
RPAや、EXCEL編集といろいろと試した結果、便利と感じたことや、難しいと思ったことなど、試した結果、分かったことをお伝えします。
RPA
PRAとは、Robotic Process Automation(ロボット、プロセス、オートメーションの略)。
決められた手順の業務を自動化することです。
Pythonでは、pyautoguiというパッケージを使うことで、RPAを行うことができます。
便利と感じたこと。
「画像データの検知」ができるため、条件付き(あらかじめ保存しておいた画像データを検出し、次の操作を行う)の自動操作を実現できる点が便利でした。
画像データを入れ替えることで、画面の解像度や、表示色などの環境に依存せず、作ったプログラムを提供することができたことも、とても良い点でした。
「キーボード操作」ができるため、ショートカットキーを利用した操作ができる点は、いろんなソフトの操作が自動化できるので、とても便利と感じました。
たとえば、ショートカットで「ファイル名を指定して実行」を呼び出し、ブラウザや、リモートデスクトップ接続を起動し、作業の自動化が実現できると思います。
ブラウザでの操作や、リモートデスクトップで別環境に接続するなどは、作業でもよく使われる機能であるため、とても使い勝手の良い機能です。
難しいと感じたこと。
リモートデスクトップ接続で接続先の環境で自動操作する場合は、ウィンドウの表示サイズや、画面の表示位置が変わる場合があるため、自動操作が難しいと感じました。
pyautoguiパッケージで、できること。
pyautoguiパッケージでは、次のことができます。
キーボードとマウスを操作する。
Pythonのプログラムで、キーボードとマウス操作を行うことができます。
画面上の座標(x,y)を指定して、マウスの移動とクリック操作、また、キー入力と、キー押下操作ができます。
import pyautogui # pyautoguiパッケージを読み込む。 screenWidth, screenHeight = pyautogui.size() # 画面のサイズを取得する。 currentMouseX, currentMouseY = pyautogui.position() # マウスの座標(x,y)を取得する。 # マウス操作 pyautogui.moveTo(100, 200) # マウスのポインタをx=100,y=200の座標まで # 移動する。 pyautogui.click() # マウスをクリックする。 pyautogui.click(200, 300) # マウスをx=200,y=300の座標でクリックする。 pyautogui.doubleClick() # マウスをダブルクリックする。 pyautogui.move(None, 50) # マウスのポインタを100ピクセル下げる。 pyautogui.moveTo(500, 600, duration=2) # マウスのポインタをx=500,y=600まで2秒かけて # 移動する。 # キーボード入力 pyautogui.write('Hello world!', interval=0.25) # 0.25秒かけて、Hello world!と入力する。 pyautogui.press('esc') # escキーを押す。 pyautogui.keyDown('shift') # shiftキーを押したままにする。 pyautogui.keyUp('shift') # shiftキーの押したままを止める。 pyautogui.hotkey('ctrl', 'c') # ctrl + c を押す。
メッセージボックスを表示する。
Pythonのプログラムで、メッセージボックスを表示させることができます。
警告、確認、入力、非表示入力のメッセージボックスが使えます。
import pyautogui # pyautoguiパッケージを読み込む。 pyautogui.alert('警告メッセージボックス:') pyautogui.confirm('確認メッセージボックス:') pyautogui.confirm('選択肢から選んでください。:', buttons=['A', 'B', 'C']) pyautogui.prompt('値を入力してください。:') pyautogui.password('パスワードを入力してください。(テキストは隠されます):')
スクリーンショットをとる。
Pythonのプログラムで、スクリーンショットをとることができます。
2種類の書き方ができますが、書き方2は1行で、シンプルに書けるのでよく使います。
import pyautogui # pyautoguiパッケージを読み込む。 # 書き方1 ss1 = pyautogui.screenshot() # スクリーンショットを取得する。 ss1.save('screenshot1.png') # 指定したファイル名で保存する。 # 書き方2 ss2 = pyautogui.screenshot('screenshot2.png') # スクリーンショットをしたファイル名で保存する。
画像データの位置を検出する。
保存しておいた画像データ(AAA.png)の画面上の座標(左位置、上位置、横の長さ、縦の長さ)を検出することができます。
マウス操作と組み合わせることで、画像データを見つけて、クリックする操作ができます。
import pyautogui # pyautoguiパッケージを読み込む。 # 画像データ(AAA.png)の中心座標をクリックする。 # 書き方1 img_location = pyautogui.locateOnScreen('AAA.png') # 画像データ(AAA.png)の座標(left, top, width, # height)を取得する。 img_x, img_y = pyautogui.center(img_location) # 画像データの中心座標を取得する。 pyautogui.click(img_x, img_y) # 指定の座標をクリックする。 # 書き方2 img_x, img_y = pyautogui.locateCenterOnScreen('AAA.png') pyautogui.click(img_x, img_y) # 指定の座標をクリックする。
EXCELファイルの編集
openpyxlというパッケージを使うことで、EXCELファイルの操作を行うことができます。
たくさんのファイルに同じ操作する場合には、とても便利です。
便利と感じたこと
複数のEXCELファイルに対して、同じ操作をしたい場合に便利です。
難しいと感じたこと
EXCELの全ての機能は使えない。
ただし、EXCELであらかじめサンプルファイルを作成し、入力ファイルの必要な値をコピーして使用するなど、工夫で対応はできます。
openpyxlパッケージで、できること。
具体的には、次のことができます。
セルの書式設定
罫線の設定
背景色の設定
行、列の非表示設定:
非表示としたい行、列を指定できます。
データの入力制限:
セルの入力制限(リスト形式)などが設定できるため、便利な機能です。
EXCEL関数の設定:関数を指定のセルに設定することができます。
別のセル値を参照して、値を編集するなどの、セルに関数を追加したい場合に便利です。
保護:パスワード付きのシート保護、指定セルの入力可能設定ができます。
複数のEXCELファイルを提供したいが、変更を制限したい場合に使える機能です。