※ご利用の際は必ず自己責任でお願いします。社内規定・利用規約を確認した上でご使用ください。

Pythonでマウスを自動操作してTeamsのステータスをずっと『連絡可能』に保ちたい」——そんなリクエストをいただいたので、今回はpyautoguiを使ったマウス自動移動スクリプトを作成しました。コピペだけで動くコードをそのまま掲載しています。テレワーク中にPCを離れてもTeamsやSlackのステータスが「退席中」に変わらないようにしたい方はぜひ参考にしてください。

なぜTeamsのステータスが自動で変わるのか

Microsoft TeamsやSlackなどのチャットツールは、一定時間(目安として5〜10分)マウスやキーボードの操作がないと、ステータスを自動的に「退席中」や「離席中」へ変更します。これはOS側のアイドル検知を利用した仕組みで、Teamsの場合は設定から変更することもできますが、管理者ポリシーで制限されている環境では個人では変えられないケースもあります。

そこで今回紹介するのが、Pythonのpyautoguiライブラリでマウスポインタを数秒おきに自動移動させるスクリプトです。OSにとっては「ユーザーが操作している」と認識されるため、ステータスが「連絡可能」のまま維持されます。

スクリプトの仕様・動作概要

シンプルな仕様ですが、実用上のポイントを押さえて設計しています。

  • マウスポインタを数秒おきにランダム移動させることでOSのアイドル検知をリセットする
  • 待機時間は2〜5秒の範囲でランダムに変化(一定間隔だと自動化検知システムに引っかかる可能性があるため)
  • 移動量も毎回ランダムに変化(現在位置から±50ピクセルの範囲)
  • Ctrl+C(KeyboardInterrupt)で安全に停止できる

事前準備:pyautoguiのインストール方法

このスクリプトはPython標準ライブラリには含まれないpyautoguiを使用します。まず以下の手順でインストールしてください。

pip を使う場合(Windows・Mac共通)

pip install pyautogui

Anaconda / Miniconda 環境の場合

conda install -c conda-forge pyautogui

Mac で pip が通らない場合

pip3 install pyautogui

インストール後、ターミナル(またはコマンドプロンプト)で以下を実行してエラーが出なければ準備完了です。

python -c "import pyautogui; print('pyautogui OK')"

補足(Mac ユーザー): macOSではアクセシビリティの許可が必要な場合があります。「システム設定 → プライバシーとセキュリティ → アクセシビリティ」にてターミナルまたはPythonの実行環境を許可してください。

Pythonマウス自動操作スクリプト【コピペ用コード全文】

以下のコードをそのままコピーしてVSCodeやPyCharmに貼り付け、実行するだけです。

import pyautogui
import random
import time

# フェイルセーフ機能:画面の角にマウスを動かすと緊急停止(デフォルトで有効)
pyautogui.FAILSAFE = True

print("マウス自動移動スクリプトを開始しました。停止するには Ctrl+C を押してください。")

try:
    while True:
        # 現在のマウス位置を取得
        current_x, current_y = pyautogui.position()

        # ランダムな移動量を設定(-50から50の範囲)
        move_x = random.randint(-50, 50)
        move_y = random.randint(-50, 50)

        # 新しい位置を計算
        new_x = current_x + move_x
        new_y = current_y + move_y

        # 画面外への移動を防ぐためクランプ処理
        screen_width, screen_height = pyautogui.size()
        new_x = max(0, min(new_x, screen_width - 1))
        new_y = max(0, min(new_y, screen_height - 1))

        # マウスポインタを移動(0.2秒かけてゆっくり動かす)
        pyautogui.moveTo(new_x, new_y, duration=0.2)

        # 2〜5秒のランダムな待機
        wait_time = random.uniform(2, 5)
        print(f"次の移動まで {wait_time:.1f} 秒待機中... (現在位置: x={new_x}, y={new_y})")
        time.sleep(wait_time)

except KeyboardInterrupt:
    print("\nスクリプトを正常に終了しました。")

カスタマイズ方法

マウスの移動量を変える

デフォルトは±50ピクセルですが、動きが目立ちすぎると感じる場合は値を小さく変更してください。

# 動きを小さくしたい場合(±10ピクセル)
move_x = random.randint(-10, 10)
move_y = random.randint(-10, 10)

待機時間の間隔を変える

Teamsのタイムアウトが短い環境では待機時間を短くすると効果的です。

# 1〜3秒間隔に変更する場合
wait_time = random.uniform(1, 3)

移動速度を変える

durationの値(秒)を変更することでマウスが動く速さを調整できます。0に近いほど瞬間移動になります。

# ゆっくり動かす場合
pyautogui.moveTo(new_x, new_y, duration=0.5)

# すばやく動かす場合
pyautogui.moveTo(new_x, new_y, duration=0.05)

スクリプトの停止方法

実行中のスクリプトを止めるには以下のいずれかの方法を使ってください。

  • Ctrl+C:ターミナル・コマンドプロンプト上で押すと「KeyboardInterrupt」が発生して終了します
  • 画面の端(四隅)にマウスを動かす:pyautoguiのFAILSAFE機能が作動して自動停止します(FAILSAFE = Trueの場合)

よくある質問(FAQ)

Q. Teamsのステータスが変わらなくなりましたか?

A. マウスが動いていてもTeamsのステータスポリシーによってはサーバー側で制御している場合があります。その場合はこのスクリプトでは対応できません。

Q. ダブルクリックで起動するexe化はできますか?

A. PyInstallerを使えばWindows向けの.exeファイルに変換できます。ご要望が多ければ別記事で解説します。コメントでお知らせください。

Q. Mac で「アクセシビリティの許可」エラーが出ます

A. 「システム設定 → プライバシーとセキュリティ → アクセシビリティ」に使用しているターミナルアプリを追加してください。VSCodeから実行している場合はVSCodeを追加します。

まとめ:pyautoguiでTeamsステータスを維持するPythonスクリプト

今回はPythonのpyautoguiを使ってマウスポインタをランダムに自動移動させ、TeamsやSlackのステータスを『連絡可能』に保つスクリプトを紹介しました。ポイントをまとめると以下のとおりです。

  • ライブラリはpyautoguiをpipでインストールするだけ
  • 移動量・待機時間をランダムにすることで自然な動作を再現
  • Ctrl+CまたはFAILSAFEで安全に停止可能
  • コードは数十行のシンプルな構成でカスタマイズも容易

「こんな機能を追加してほしい」「exe化の方法も知りたい」などのご要望があればコメント欄でお知らせください。今後も初心者向けにPythonの実践的なスクリプトを紹介していきます。

Pythonをもっと学びたい方は メルマガ登録はこちら からどうぞ。不定期でPython初心者向けの情報をお届けしています。

📚 関連記事