初心者がPythonでRPA作ってみた

パソコンでやる単純作業の自動化に興味があったので作ってみました。

前にtkinterをちょっと使ってみてpyautoguiも使ってたのでそれを組み合わせて作りました。

#使用用途
- 実行したら画面が勝手に動いてGooleMapで入力した名前を検索してそれをスクショしてjpgで保存してくれます。
- いろんな駅の地図写真がほしい時に使ってください

#使い方
- ファイルを作ってその中にこのコードが入ったファイルを置きます
- デスクトップの一つ左にフルスクリーンのgooglecghromeを用意します
- googlechromeでgooglemapを開きます
- コンソールからpython3で実行します
- ボックスに駅名を入れます (東京駅)
- スタートを押します
- 待ちます
- 最後に左に画面が戻ったら、このコードが入ってるファイルにスクショが保存されます。


#実行環境
- MacOSMojave(10.14.5)
- Python 3.7.3
- pyperclip 1.7.0
- PyAutoGUI 0.9.44
- tkinter 3.7.4


```python
import pyautogui as pgui #pyautoguiをインポートしてpguiに略しています
import time
import tkinter as tk #tkinterをインポートしてtkに略しています、Python3では最初のtを小文字で書くの知らなくて苦労した
import sys
import random
import pyperclip as pp #pyperclipを使っていますクリップボードにコピーするため

root = tk.Tk()
root.title("RPAApp") #windowのタイトル
root.geometry("500x500") #windowの大きさ

titlename = ("RPA") #ラベルの中身定義
label1 = tk.Label(root, text=titlename, font=("Ricty Diminished", 12)).pack() #ラベルのオプションとか色々

box1 = tk.Entry() #入力ボックス一つ目
box1.insert(tk.END,"")
box1.pack()

box2 = tk.Entry()　#入力ボックス二つ目
box2.insert(tk.END,"")
box2.pack()

box3 = tk.Entry()　#入力ボックス三つ目
box3.insert(tk.END,"")
box3.pack()

i = 1 #何回実行したか調べるために
name = 0 #クリップボードにコピーするための物を入れるため
first = 0 #firstは一回目のループをカウントするため

def windowR (): 
    pgui.hotkey('ctrl', 'right') #ショートカットを打っている（左）

def windowL ():
    pgui.hotkey('ctrl', 'left')　#ショートカットを打っている（左）

def exit ():
    global i # global変数を使えるようにしている
    global name
    global first

    if i == 4: #箱の中身を全て処理たら(三回ループ)変数を全てリセットして連続で利用できるようにした
        i = 1
        name = 0
        first = 0
    else :
        print("end")　#一周したらendをプリント

def paste1 ():
    pgui.hotkey('command','v') #ペーストのショートカットキー

def Rclick ():
    pgui.click() #左クリック

def firstskip ():
    global first
    if first == 0:
        return #一回目はスキップ
    else:
        pgui.moveTo(373,141) #二回目以降前の検索結果を削除する
        time.sleep(0.1)
        pgui.click()

def textdata ():
    global name
    global i

    if i == 1: #一回目のループ
        name = box1.get()
        pp.copy(name)
        i += 1 #ボタンが押されるたびにiの中身が入れ替わるのでファイル名重複を防ぐ
    elif i == 2:#二回目のループ
        name = box2.get()
        pp.copy(name)
        i += 1 #ボタンが押されるたびにiの中身が入れ替わるのでファイル名重複を防ぐ
    elif i == 3:#三回目のループ
        name = box3.get()
        pp.copy(name)
        i += 1 #ボタンが押されるたびにiの中身が入れ替わるのでファイル名重複を防ぐ

def screenshot():
    global name
    sc = pgui.screenshot(region=(900, 400, 2500, 1500))  #スクリーンショットを撮る
    ssname = str(name) + ".png"   #スクショしたファイルの名前指定の型
    sc.save(ssname)   #上の処理をここに入れている


def btn1():    #ボタンの処理
    windowR()#window右に一回スライド
    
    for y in range(1,4):

        global name
        global i
        global first

        # windowR() #window右に一回スライド
        textdata() #textdataを呼び出す
        time.sleep(0.5) #処理一時停止
        firstskip()#firstskip呼び出し
        time.sleep(0.5)
        pgui.moveTo(243,141)
        pgui.click()#pguiでクリック
        time.sleep(1)#1秒待ち
        paste1()
        time.sleep(0.5)
        pgui.press('enter')
        time.sleep(2)
        screenshot()
        time.sleep(0.5)
        first = first + 1
        exit()

    windowL() #最後にwindowを左に戻す


btn = tk.Button(text="スタート", command = btn1) # ボタンを作成btn1を呼び出し
btn.pack()

root.mainloop() #tkinterの中身

```