一番上のファイルに行ったGUI操作を同一フォルダ内の全てに適用させる


対象
---------------------------------------
・コード書けない人
・コード書くの面倒な人
・コード書く時間がない人

:::note info
10分程度で実装できます。
:::

できること
---------------------------------------
・ファイルの一括操作

使い方
---------------------------------------

**step1「自動化プログラム作成」**
(1)作成用プログラムをデスクトップに保存する。

(2)画面右半分にターミナルを起動する。
![スクリーンショット 2022-03-30 23-31-35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234828/98976cd5-8f19-7a93-0f98-483d35a553b4.png) 
(3)画面左半分に繰り返したいフォルダを開く。
![スクリーンショット 2022-03-30 23-30-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234828/8712d4fb-9f29-90f0-dc93-3d8bee4a8932.png)
(4)ターミナルに「pip install pyautogui」と入力する。(初回のみ)
```python:terminal
pip install pyautogui
```
(5)「python」と打ち、続けて作成用のプログラム(auto1.py)をドラッグ＆ドロップして貼り付ける。
実行する。
```python:terminal
python /~~/~~/~~/desktop/auto1.py
```
![スクリーンショット 2022-03-30 23-32-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234828/11a71374-56a4-8ba1-bd40-83cefedf7fb6.png)
(6)1を押して５秒以内に一番上のファイルにカーソルを合わせる。(次のプログラムが始まるまでカーソル固定)
![スクリーンショット 2022-03-30 23-30-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234828/bc6dc656-d0ab-359e-a029-242e4566c30e.png)
(7)４→２の順に押す。(ここで一番上のファイルが開いたことになる)
(8)一番上のファイルを画面左半分に開く。

![スクリーンショット 2022-03-30 23-30-49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234828/1f84200c-0888-1c1b-530a-2fb1df10edec.png)
(9)自動化させたい処理を入力していく。
(10)3→0の順に押すとファイルを保存して閉じる。
(11)繰り返したい数を入力する。
(12)デスクトップに自動化ファイルが完成する。

**step2「自動化プログラム起動」**
(1)画面右半分にターミナルを開く
(2)画面左半分に繰り返したいフォルダを開く
(3)step1で作られたプログラムをドラッグ＆ドロップ、実行

```python:terminal
python /~~/~~/~~/desktop/step1で作られたプログラム.py
```


作成用プログラム(windowsの場合)
```python:auto1.py
import pyautogui as p
import time
import re

def where_click(c,x,i):
    print("５秒以内にカーソルを合わせてください")
    time.sleep(5)
    x = p.position()
    print(f"{c}回目にクリックする位置情報を保存しました!")
    return x

#デスクトップにファイルを新規作成　　
file_path = input("デスクトップまでのパスを入力してください")
file_name = r"/" + input("ファイル名を入力してください") + ".py"
my_file = file_path + file_name
print(my_file)
open(my_file,"w",encoding="utf-8")
text = "import pyautogui as p\nimport time\n\ndef automation(s):\n"
with open(my_file,"a",encoding="utf-8") as file:
    file.write(text)

x = "a"
i = 0
c = 1
s = 0
y = True

while y:

    option = int(input("シングルクリックする→1\nファイルを開く→2\nファイルを保存して閉じる→3\n一番上のファイルを選択→4\n終了する場合→0\n"))

    if option == 1:
        j = where_click(c,x,i)
        text = re.findall(r"\((.+)\)", str(j))
        with open(my_file, "a", encoding="utf-8") as file:
            file.write("    p.click(" + text[0] + ")\n")
            file.write("    time.sleep(2) \n")
        x += str(i)
        i += 1
        c += 1
    elif option == 2:
        text = "    p.hotkey('ctrl', 'o')\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
    elif option == 3:
        text = "    p.hotkey('ctrl', 's')\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
        time.sleep(2)
        text = "    p.hotkey('ctrl', 'w')\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
        time.sleep(2)
        text = "    p.hotkey('ctrl', 'q')\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
    elif option == 4:
        text = "    p.press('up')\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
        text = "    if s > 0:\n        p.press(['down'] * s)\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
    elif option == 0:
        y = False
    else :
        print("操作なし")

loop_count = int(input("繰り返す回数を入力してください"))
time.sleep(2)
text = f"\ns = 0\n\nfor i in range({loop_count}):\n    automation(s)\n    time.sleep(2)\n    s += 1\n"
with open(my_file, "a", encoding="utf-8") as file:
    file.write(text)

```
作成用プログラム(Macの場合)
```python:auto1.py
import pyautogui as p
import time
import re

def where_click(c,x,i):
    print("５秒以内にカーソルを合わせてください")
    time.sleep(5)
    x = p.position()
    print(f"{c}回目にクリックする位置情報を保存しました!")
    return x

#デスクトップにファイルを新規作成　　
file_path = input("デスクトップまでのパスを入力してください")
file_name = r"/" + input("ファイル名を入力してください") + ".py"
my_file = file_path + file_name
print(my_file)
open(my_file,"w",encoding="utf-8")
text = "import pyautogui as p\nimport time\n\ndef automation(s):\n"
with open(my_file,"a",encoding="utf-8") as file:
    file.write(text)

x = "a"
i = 0
c = 1
s = 0
y = True

while y:

    option = int(input("シングルクリックする→1\nファイルを開く→2\nファイルを保存して閉じる→3\n一番上のファイルを選択→4\n終了する場合→0\n"))

    if option == 1:
        j = where_click(c,x,i)
        text = re.findall(r"\((.+)\)", str(j))
        with open(my_file, "a", encoding="utf-8") as file:
            file.write("    p.click(" + text[0] + ")\n")
            file.write("    time.sleep(2) \n")
        x += str(i)
        i += 1
        c += 1
    elif option == 2:
        text = "    p.hotkey('command', 'o')\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
    elif option == 3:
        text = "    p.hotkey('command', 's')\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
        time.sleep(2)
        text = "    p.hotkey('command', 'w')\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
        time.sleep(2)
        text = "    p.hotkey('command', 'q')\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
    elif option == 4:
        text = "    p.press('up')\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
        text = "    if s > 0:\n        p.press(['down'] * s)\n    time.sleep(2)\n"
        with open(my_file, "a", encoding="utf-8") as file:
            file.write(text)
    elif option == 0:
        y = False
    else :
        print("操作なし")

loop_count = int(input("繰り返す回数を入力してください"))
time.sleep(2)
text = f"\ns = 0\n\nfor i in range({loop_count}):\n    automation(s)\n    time.sleep(2)\n    s += 1\n"
with open(my_file, "a", encoding="utf-8") as file:
    file.write(text)

```


Reference 
---------------------------------------
https://pyautogui.readthedocs.io/en/latest/