もっと便利に使いやすく

【Pythonでできる】自動化プログラムの動作サンプル紹介

【Pythonでできる】自動化プログラムの動作サンプル紹介

プログラミングを覚えたい!という理由の一つに「仕事を効率化したい」「自動化したい」という要望があります。

よく聞く自動化の例として、

  • 月末月初の定型作業
  • ゲームのレベル上げ作業
  • 同じ作業の繰り返し
  • 人気商品が入荷したらすぐに購入する
  • 販売開始の商品を誰よりも先に購入する

などなど、できたら確実に助かる、嬉しいことが挙げられます。

「プログラミングなんて難しいし…」

そんな非エンジニアの方にこそ、どのようなスクリプトで動いているのか?仕組みをご紹介します。

なお、プログラムで自動化するといっても、いろいろなアプローチの仕方があるのですが、この記事では「キーボードとマウスの操作を自動する」という方法をご紹介しています。

サンプルスクリプトの動作紹介

まずは、この記事で作成するスクリプトの実行結果を動画で撮りましたのでご覧ください。

各説明時に使用しているスクリプトはこのあとコピペできるようにしてあります。

このように、キーボードとマウスの操作を自動で行うスクリプトが作成できます。

さっそく、一つずつ説明しますね。

PyAutoGUI ライブラリ

さて、この記事で自動化を行うために、

Python 用のライブラリをインストールする必要があります。

コマンドでインストールする場合は、以下のように実行してください。

pip install pyautogui

PyCharm など開発ツールを利用している場合は、

ライブラリ名を「pyautogui」と検索すれば同じようにインストールする事ができます。

PyCharm でライブラリをインストールする方法が分からない方はこちらの記事を参照してください。

また、以降の説明で「OpenCV」というライブラリの機能を使いますので、

こちらもインストールしておきましょう。

pip install opencv-python

これで準備は終わりです。

PyAutoGUI の基本的な使い方

サンプルの動作を紹介する前に、PyAutoGUI の基本的な使い方をご紹介します。

「基本はいいから、サンプルだけ見たい」という方はこちらまでジャンプしてください。

マウスポインタの座標を確認する

PyAutoGUI では、マウスの位置を座標として管理し、

移動やクリックをする際の命令を書くことができます。

そのためには、その位置(座標)をあらかじめ確認する必要があります。

そこで、現在のマウスポインタの座標を確認するためのスクリプトを用意し、

そのスクリプトを使って自動化する際のボタンや入力ボックスの位置を控えておきます。

以下のスクリプトは、無限ループで常に現在のマウスポインタの座標を表示しています。

また、スクリプトを終了するために「ESCキー」でループを終了する記述も行っています。

(そのために、OpenCV というライブラリの機能を使っています。)

import pyautogui
import cv2

while True:
    print(pyautogui.position())
    key = cv2.waitKey(1)
    if key == 27:   # escキーでキャンセル
        break

pyautogui.position() によって、現在のマウスポインタの座標を取得し、それをprint 文で出力しているのです。(下図)

PyAutoGUIでマウスポインタの座標を取得してprintする実行結果
現在のマウスポインタの座標をxとyで取得し表示している

座標を指定してクリックする

座標が確認できたら、その場所をクリックする操作を確認しましょう。

ボタンをクリックする、入力ボックスをクリックする、というように、作業にはクリックが必須です。

以下のスクリプトでは、座標を指定してクリックしています。

実行すると指定された座標を順番に高速でクリックしていることが確認できます。

実際に実行する際は、Excelを起動しておくとセルをクリック(選択)していることが分かります。

また、ここではfor 文を使って5回繰り返す処理にしていますので、合わせて確認してください。

import pyautogui

for i in range(5):
    pyautogui.click(2000, 195)
    pyautogui.click(2623, 195)
    pyautogui.click(3252, 195)
    pyautogui.click(3252, 463)
    pyautogui.click(3252, 764)
    pyautogui.click(2623, 764)
    pyautogui.click(2000, 764)
    pyautogui.click(2000, 463)

click ( x 座標, y 座標) によって、クリックする座標を指定しています。

文字の入力をする

キーボード操作(入力)を行うための記述を確認しましょう。

以下のスクリプトでは、座標を指定してクリックしたら、「hello!papa!」と入力し、「Enterキー」を押すという処理を行っています。

import pyautogui

pyautogui.click(2623, 463)

pyautogui.write('hello!papa!')
pyautogui.press('enter')

write (‘文字’) によって、その場所に文字を入力します。

ほとんどの場合、クリックして入力、となることが考えられるため、

ここでは座標を指定してクリックしてから入力しています。

press (‘キーの名前’) によって、キーボードの特定のキーを入力することができます。

今回は、エクセルシート内の指定したセルに「 hello! papa! 」と入力したら、確定するために Enter キーを押す必要があります。

入力作業の繰り返しを行う

座標を指定して入力、という基本を紹介したところで、Python による繰り返し文「for」を使って連番を入力する処理を紹介します。

Python に限らず、プログラミング言語では「繰り返し」ができる処理が用意されています。.

以下のスクリプトでは、指定した座標をクリックした後、1~10を連続で入力し、それぞれ Enter キーで確定する処理を行っています。

import pyautogui

pyautogui.click(2100, 300)

for i in range(1, 11):
    pyautogui.write(str(i))
    pyautogui.press('enter')
    i += 1

for 文の詳しい使い方はこの時期では省略しますが、詳しく知りたい方はこちらの記事を参照してください。

マウスポインタの座標を指定して移動する

これまでの操作は、座標を指定してダイレクトにクリックしたり文字を入力する方法です。

しかし、最近は自動化=機械的な処理として嫌われる場合があります。

ゲームなんかでも、自動化ができないように途中で違う画面が出たり、処理が速すぎると「人間じゃないかも?」という判定が入って処理が続けられないような仕組みがあります。

それを回避するために、あえてマウスポインタを動かす処理を入れることで、「人間のようにマウスを操作し、文字を入力する」というスクリプトを実現します。

以下のスクリプトでは、座標を指定して〇秒かけて移動するという処理を行っています。

import pyautogui

# マウスポインタの位置を移動
pyautogui.moveTo(2623, 463)

# マウスポインタの位置を1秒かけて移動
pyautogui.moveTo(2698, 436, 1)

# マウスポインタの位置を2秒かけて移動
pyautogui.moveTo(2623, 493, 2)

# マウスポインタの位置を2秒かけて移動
pyautogui.moveTo(2541, 263, 2)

# マウスポインタの位置を2秒かけて移動
pyautogui.moveTo(2623, 436, 2)
pyautogui.click()

moveTo ( x 座標, y 座標, 移動時間) によって、指定した移動時間をかけて座標にマウスポインタを動かすことができます。

ただし、これはあくまで移動することしかできないため、クリックするには前述の click () を引数なし(座標指定しない)で入れないとクリックしてくれないので注意してください。

電卓を起動して計算する自動プログラム

ここまでの基本を使って、Windows の電卓を起動し、指定の計算をするスクリプトを作ってみます。

今回は「100×55」をしっかりマウスポインタを動かしてクリックする操作で実現します。

あらかじめWindows ボタンや電卓の各数字ボタンの座標の位置を確認していますので、それをそのままスクリプトで指定します。

import pyautogui

# 電卓を起動
pyautogui.moveTo(1956, 869, 1)
pyautogui.click()
pyautogui.moveTo(2390, 279, 1)
pyautogui.click()

# 計算する
pyautogui.moveTo(2340, 684, 1)
pyautogui.click()
pyautogui.moveTo(2507, 758, 1)
pyautogui.click()
pyautogui.moveTo(2507, 758, 1)
pyautogui.click()
pyautogui.moveTo(2858, 531, 1)
pyautogui.click()
pyautogui.moveTo(2510, 608, 1)
pyautogui.click()
pyautogui.moveTo(2510, 608, 1)
pyautogui.click()
pyautogui.moveTo(2840, 766, 1)
pyautogui.click()

実行した様子を動画で撮りました。

動画内で動いているマウスポインタは全てスクリプトによる自動的な操作です。

このように、操作したいことを順番に記述するだけで、PC 内のあらゆる操作を「自動化」することができるのです。

決して難しいプログラムではないと思いますので、非エンジニアでもできそうだと思いませんか?

まとめ

今回紹介した「キーボードとマウスを使った自動化」では、

  • マウスポインタの移動
  • クリック
  • 座標を指定したマウスポインタの移動
  • キーボードの入力(キー操作)

以上の 4つの操作を組み合わせるだけでできる「自動化」をご紹介しました。

もっと複雑な処理、判定もできますので、興味がある方はぜひ試してください。

良く分かった!!と思ってもらえたら嬉しいです。

それでは、ステキなPythonライフを!

Pythonについて詳しく知りたいという方は、こちらの書籍もおススメです。

ABOUT ME
papa3
某教育機関で現役の講師をしながら、ブログとYouTubeでプログラミングの情報を発信しています。個人でもウェブアプリケーション開発と運営をしながら本業収入<副業を目指しています!

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です