無料で始めるPython RPA: PyAutoGUIとPyperclipで業務自動化を実現する

,

「RPAを導入したいけど、UiPathやPower Automateなどの商用ツールはライセンス費用がネックになる」「メンテナンスが大変」 – そんな声をよく耳にします。実は、Pythonの標準的なライブラリを使うだけで、驚くほど手軽にRPA(Robotic Process Automation)を実現できることをご存じでしょうか?

本記事ではPyAutoGUI, Pyperclipという2つのPythonライブラリを使い、無料でPCの操作を自動化する方法をご紹介します。

1.なぜPythonでRPAなのか?

 商用RPAツールには専用の開発環境やライセンス費用が必要になるケースが多く、小規模な自動化や検証目的での導入にはハードルがあります。一方、Pythonであれば、

  • 無料 (オープンソースのライブラリのみで構築可能)
  • 軽量 (インストールも数分で完了)
  • 柔軟 (他のPythonライブラリと組み合わせて拡張しやすい)

といったメリットがあり、「まずは投資を抑えて小さく試してみたい」というニーズに最適です。特に、システムからExcelへのデータ転記、またはその逆、定型フォームへの入力、繰り返しのクリック操作のみの作業など、GUI操作を伴う業務との相性は良好です。

2.ライブラリ紹介

 PyAutoGUIとは、マウスの移動、クリック、キーボード入力、画面上の画像認識などをプログラムから制御できるライブラリです。人間があたかもPCを操作しているように、スクリプトでマウス操作やキーボード入力が可能となります。

  • マウスカーソルの移動・クリック・ドラッグ、画面スクロール
  • キーボード入力、ショートカット操作
  • 画面上の特定画像(ボタンなど)を検索してその画像をクリック
  • 画面のスクリーンショット取得

 Pyperclipとは、OSのクリップボード(コピー、ペーストの一時保存領域)をPythonから読み書きできるライブラリです。日本語などのマルチバイト文字を扱う際、PyAutoGUIのtypewrite関数だけでは正しく入力できないときに、クリップボードに文字列をセットして、Ctrl+Vで貼り付けることによって、この問題を解決できます。

3.どんなことが可能か

この2つのライブラリを組み合わせることで、以下のような業務を自動化できます。

  • 定型業務の自動入力:Webフォームや業務システムへの繰り返し入力作業
  • Excelへの自動転記:他システムの画面から値をコピーし、Excelに貼り付ける作業
  • 日本語テキストの自動入力:クリップボード経由での日本語貼り付け
  • 画面操作の自動化:特定のボタン画像を認識してクリックする処理
  • 定型メール・報告書の下書き作成補助:テンプレート文章の自動入力

ただし、PyAutoGUIは「画像配置」、「画面上の見た目」に依存するので、キー画像(ターゲット画像)の設定にはコツが必要となります。また、システムの反応時間があるので待機時間(delay)の調整が必要となります。少なくとも2画面で開発すると楽です。(例えば、左画面を操作画面、右画面をPythonスクリプト画面など)

4.環境設定

必要なライブラリのインストール

pip install pyautogui pyperclip

pip install opencv-python        ※confidence = 0.8 などのパラメーターを指定するのに必要

5. 実際のコード例

サンプルとしてwindows11においてメモ帳がスタート画面にピン留めされていることを前提に、メモ帳を開いて’Hello RPA’, 「お世話になっております。本件、承知いたしました。」を入力する。準備としてあらかじめ下記のような画像が登録されていることが前提。

import pyautogui as pa
import pyperclip
import time

def image_click(imgpng="batsu.png"):
stat = 0
location = pa.locateOnScreen(imgpng,confidence=0.8)
if location:
center = pa.center(location)
pa.click(center,interval = 0.5)
stat = 1
print("ボタンをクリックしました")
else:
print("対象のボタンが見つかりませんでした")
return stat

# 実行までに3秒の猶予を設ける(安全対策として重要)
time.sleep(3)
# 現在のマウス座標を取得
x, y = pa.position()
print(f"現在の座標: x={x}, y={y}")
# 指定座標へマウスを移動してクリック
pa.moveTo(500, 300, duration=1)
pa.click()
# Window markをクリック
time.sleep(1)
s = image_click("winst.png")
# スタートにピン留め済みのmemo帳アイコンをクリック
time.sleep(1)
s = image_click("memo.png")
time.sleep(1)
# メモ帳のタブをクリックした後、相対的に下に移動してクリック
s = image_click("memotab.png")
x,y = pa.position()
pa.move(x,y+100,duration=1)
pa.click()
# キーボード入力(PyAutoGUIは英数字のみ)
pa.typewrite("Hello RPA", interval=0.05)
time.sleep(1)
pa.press('return')
time.sleep(1)
pa.press('return')
time.sleep(1)
# 日本語テキストをクリップボードにセット pyperclipが必要となる
pyperclip.copy("お世話になっております。本件、承知いたしました。")
# Hello RPAタブをクリック
s = image_click("HelloRPA.png")
x,y = pa.position()
pa.move(x,y+100,duration=1)
pa.click()
time.sleep(0.5)
# クリップボードの内容をペースト(Ctrl+V)
pa.hotkey("ctrl", "v")

6.運用時の注意点

  • フェイルセーフ機能:マウスを画面の左上隅(0,0)に移動すると処理が強制終了する。誤動作時にすぐに止められる。pyautogui.FAILSAFEはデフォルトで有効となっています。無効にしないよう気を付けましょう。
  • 待機時間の確保:time.sleep()は安全かつ適切に挟むことが重要です。最低1秒でも人間が操作するよりも早いです。アプリのページめくり時間とかは長い場合があるのでそれに合わせて待機時間をいれます。
  • 画面ロック・解像度変更に弱い:座標ベースの操作はあまり行わないほうが無難。キー画像からの相対距離でクリックしたほうが安定する。
  • 業務システムの利用規約確認:自動操作がシステムの利用規約に抵触しないか。会社のルールで夜間の操作、完全無人の操作が許容されているかなど、個別にセキュリティを確認することが重要です。

7.まとめ

PyAutoGUIとPyperclipを使えば、専用ツールを導入せずとも、PythonのスクリプトでPCのRPA操作を実現できます。特に、

  • 定型的なフォーム入力
  • 日本語を含むテキストの自動入力
  • 画像認識をつかったクリック操作

といった場面で真価を発揮します。ご興味があればCSコンサルティングにご相談ください。なおブログの作成にはClaudeの支援を借りています。

注)RPAの運用ルールについては、各企業の運用ルールに従いください。また、システムに対して自動操作をすると、同時に大量のアクセスを想定してない場合など、不具合を引き起こす場合もあるのでシステムの利用規約を確認した上、システム管理者にご相談ください。また、サンプルスクリプトはそれを流用したことによる損害については、当方は一切責任を負いませんのでご了承お願いいたします。


トップへ戻る