特定のキーを繰り返して押す作業を自動化したい
Kintone(キントーン)のレコードの情報を更新するために、編集、保存、次への作業を最初のレコードから最後のレコードまで繰り返し行うことがありました。これをショートカットキーで行っていたのですが、レコード数が少なければ手動で問題ありませんが、これが数百とか数千以上あるとちょっと大変です。
ちなみに、レコード詳細画面で「E」は編集モード、「Ctrl+S」が保存、「J」が次のレコードに移動を行うショートカットキーで、これを繰り返し連打していました。
キントーン側でJavascriptを使うやり方もあるかと思うのですが、初心者で無料体験中なので、どうやればいいかわからなかったので、VBScriptとか使ってWindows側からできないかな?と調べていたらPythonとPyAutoGUIというモジュールを使ってできるといったページを見つけたので、試すことにしました。
PyAutoGUIをインストール
WindowsにPythonがインストールされていることが前提ですが、その状態でコマンドプロンプトを起動し、PyAutoGUIをコマンドでインストールします。
Pythonのバージョン確認するコマンド
python -v
PyAutoGUIをインストールするコマンド。
pip install pyautogui
pipはPythonのパッケージ管理ツールで、コマンドを実行すると、以下の画面が表示されます。

インストール完了時の表示。

インストールされているPythonのパッケージとバージョンを確認するコマンド
pip list

ここにPyAutoGUIがあればOKです。
Keyboardモジュールも必要
自動化処理を実行中に中断したい場合に備え、特定のキー押下で停止できるようにする場合、キーの押下を検出するためにkeyboardモジュールが必要です。PyAutoGUI同様にコマンドプロンプトからコマンドでインストールします。
pip install keyboard
Python実行ファイルを用意
以下のソースをテキストエディタで拡張子を.pyにして適当な場所に保存します。
import pyautogui
import keyboard
import os
# 一時停止
os.system('PAUSE')
# 処理を実行するたびに1秒待機
pyautogui.PAUSE = 0.5
# 画面のサイズを取得
width, height = pyautogui.size()
# 指定の位置にカーソルを移動
pyautogui.moveTo(100, 400, duration=2)
# 現在のカーソルの位置で左クリックを1回
pyautogui.click(button="left")
# 順番にキーを押す処理を繰り返す
num = 0
end_num = 10
while num < end_num:
if keyboard.is_pressed("shift"):
print("SHIFTキーが押されたので中断します。")
os.system('PAUSE')
print(str(num+1)+"回目の処理を実行中です。(SHIFTキーで停止)")
pyautogui.press("e")
pyautogui.hotkey("ctrl", "s")
pyautogui.press("j")
num += 1
if num == end_num:
print("処理が終わりました。同じ処理を繰り返しますか?")
os.system('PAUSE')
num = 0
continue
print("処理が終わりました。")
# 一時停止
os.system('PAUSE')
pyファイルを実行
pyファイルを直接実行したい場合
ファイルをダブルクリックします。

コマンドプロンプトから実行したい場合
コマンドプロンプトからpyファイルを呼び出せば、記載されたスクリプトが実行されます。例えば、test.pyというファイルがCドライブ直下にあったとしたら、以下のようになります。
python c:\test.py
処理を中断したいとき
誤った操作になってしまったときは、Pythonの画面でキーボードのPAUSEを押下すると一時停止。Python及びコマンドプロンプトでCtrl+Cを押すと終了させることができます。
Excelなどでも使えそう
今回、Kintone(キントーン)上で繰り返しキー操作を行うためにこのスクリプトを使いましたが、Excel(エクセル)やWindows上で自動で繰り返し行いたい作業がある場合に使えそうです。
