· 

PythonでRPA(パソコン作業の自動化)

PyAutoGUIというモジュールを使ってパソコン作業の自動化アプリを作ってみました。

汎用アプリというわけにはいかずそれぞれの環境で作りこむ必要があります。

AIに聞きながら組み立てていったのですがなかなかうまくいかず手間がかかりました。

出来てしまえば応用は簡単なような気がします。

# shigyou.pyw

# パソコン作業の自動化

# 始業時にCromeを起動してGroupSessionを起動し業務開始ボタンを押すまで

# PyAutoGUI のインストール

# pip install pyautogui

# pip install Pillow

# OpenCV (拡張機能も利用)のインストール

# pip install opencv-contrib-python

 

import pyautogui as gui

import pyperclip  # クリップコピーライブラリ

import time # 入力待ち時間用Timeモジュール

from tkinter import messagebox # windowsGUIメッセージボックスモジュールをインポート

import subprocess # コマンドを入力して子プロセスを起動するモジュールをインポート

import os

import sys

 

# ------------------------------------------------------------

 

# Cromeアイコンをクリック

# 画像[cromekidou.png]

def cromekidou():

# ----------------------------------------------------------------------------

box = gui.locateOnScreen('cromekidou.png', confidence=0.9, minSearchTime=10)

x, y = gui.center(box)

gui.moveTo(x, y, duration=0.3)

gui.click()

# -----------------------------------------------------------------------------

 

# プロフィールアイコンをクリック

# 画像[kogawa.png]

def kogawa():

# ----------------------------------------------------------------------------

box = gui.locateOnScreen('kogawa.png', confidence=0.9, minSearchTime=10)

x, y = gui.center(box)

gui.moveTo(x, y, duration=0.3)

gui.click()

# ----------------------------------------------------------------------------

 

# GSログインをクリック

# 画像[GS.png]

def gs():

# ----------------------------------------------------------------------------

box = gui.locateOnScreen('GS.png', confidence=0.9, minSearchTime=10)

x, y = gui.center(box)

gui.moveTo(x, y, duration=0.3)

gui.click()

# -----------------------------------------------------------------------------

 

# ユーザー窓をクリック

# 画像[userid.png]

def userid():

# -----------------------------------------------------------------------------

box = gui.locateOnScreen('userid.png', confidence=0.9, minSearchTime=10)

x, y = gui.center(box)

gui.moveTo(x, y, duration=0.3)

gui.click()

# -----------------------------------------------------------------------------

 

# 表示されるユーザー名とパスワードをクリック

# 画像[uspw.png]

def uspw():

# -----------------------------------------------------------------------------

box = gui.locateOnScreen('uspw.png', confidence=0.9, minSearchTime=10)

x, y = gui.center(box)

gui.moveTo(x, y, duration=0.3)

gui.click()

# -----------------------------------------------------------------------------

 

# ログインをクリック

# 画像[login.png]

def login():

# -----------------------------------------------------------------------------

box = gui.locateOnScreen('login.png', confidence=0.9, minSearchTime=10)

x, y = gui.center(box)

gui.moveTo(x, y, duration=0.3)

gui.click()

# -----------------------------------------------------------------------------

 

# 業務開始をクリック

# 画像[start.png]

def start():

# -----------------------------------------------------------------------------

 

try:

box = gui.locateOnScreen('start.png', confidence=0.9, minSearchTime=10)

 

if box:

x, y = gui.center(box)

gui.moveTo(x, y, duration=0.3)

gui.click()

# 業務開始をクリックしました。

else:

# 画像は見つかりませんでしたが、例外は発生していません

messagebox.showinfo("確認","始業時ではありません、ここで終了します")

sys.exit() # 終了する

 

except gui.ImageNotFoundException:

# 画像が見つからず、例外が発生しました。代替処理を実行します

# 代替処理

messagebox.showinfo("確認","始業時ではありません、ここで終了します")

sys.exit() # 終了する

 

# -----------------------------------------------------------------------------

 

# 完了をクリック

# 画像[end.png]

def end():

# -----------------------------------------------------------------------------

box = gui.locateOnScreen('end.png', confidence=0.9, minSearchTime=10)

x, y = gui.center(box)

gui.moveTo(x, y, duration=0.3)

gui.click()

#

 

# ---- ここからメイン ----

 

mbox = messagebox.askyesno('確認', '続ける場合は「はい」をクリックします\n中止する場合は⁽「いいえ」をクリックします。') 

 

if mbox: # 「はい」を選択した場合 True

 

# それぞれの関数呼び出し

cromekidou() # Cromeアイコンをクリック

kogawa() # プロフィールアイコンをクリック

gs() # GSログインをクリック

userid() # ユーザー窓をクリック

uspw() # 表示されるユーザー名とパスワードをクリック

login() # ログインをクリック

 

start() # 業務開始をクリック

 

end() # 完了をクリック

 

 

else: # 「いいえ」の場合 False

messagebox.showinfo("確認","中止します")

sys.exit() # 終了する

 

#ウインドウの描画

root.mainloop()