LoginSignup
4
9

More than 3 years have passed since last update.

続!pyAutoGUIでリモートワークサボり隊!

Posted at

※この記事は新入社員の問いにあることないことないことないこと話した備忘録です。

本日の困りごと

ぱんだーさん、これでTeamsが退席中になるんですけどどうにかしてください

_人人人人人_
> 垢バレ <
 ̄Y^Y^Y^Y ̄

経緯

前回の記事は元クライアントとの雑談(LINE)の中で生まれたソース。。
それをまさか使おうとする強者がこんなに近くに現れるとは思わなかったよ…!

「退席中になるんですよ」
「仕事しろよ…」
「だって、リモートワークやることないじゃないですか!」

というわけで、MicrosoftTeams(会社での標準チャットツール)の退席表示を回避させろという話。
もうその端末でネットサーフィンしてたらいいと思う。

今回の解決方法

今回解決するのは「Teamsをいかに連絡可能な状態で保つか」という点。
出先なので、思いつく方法何点か候補を書いていこうと思う(検証は帰ってからね)。

1. スマホでTeamsを開けばいいじゃない

①アプリ版Teamsをダウンロードし、自身のアカウントを設定
②スマホの自動ロックを「なし」に設定
③アプリ版Teamsを開いて側に置く(充電はしとく)

MicrosftTeamsはこの手順で簡単に「連絡可能」の維持ができる。
注意点はアプリがアクティブでなければ「連絡可能」とならないこと。
バックグラウンド起動してスマホでゲームを…というわけにはいかないのだ。
普段使ってないスマホがある…とか、スマホ触らずに寝てたい…って人はコレでいいんじゃないかと思う。
(会社の評価がどうなっても)知らんけど。

2. Python(pyAutoGUI)を使って操作してる風にみせる

MicrosoftTeamsでは退席中表示は放置5分だったと思う。
しっかり仕事中でもそのぐらい放置することは多々ある。
その際、復帰させようとして

  • マウス/タッチパネルでのカーソルの移動
  • キーボード(矢印キー、タブキー)でのカーソル移動

と動かしてみると「退席中」のまま変わらない…ということが起きていた。
この時の退席中表示を確実に解除する方法はキー入力操作だ。
ということは、同じことをPythonにさせればいいんじゃないだろうか。

sample2.py
import pyautogui as pg
import time
try:
    while True:
        time.sleep(180)

        # chromeを開く
        pg.hotkey('win','r')
        pg.typewrite('chrome.exe')
        pg.press('enter')
        time.sleep(5)

        # 文字列testを検索
        pg.typewrite('test')
        pg.press('enter')
        time.sleep(5)

        # ウィンドウを閉じる
        pg.hotkey('alt','f4')

except KeyboardInterrupt:
    print('仕事しよ')

解説はソース内のコメントのとおり。
前回のマウス操作を「Chromeを開いて「test」という文字列で検索して閉じる」に変更しただけだ。
[Alt]+[F4]で別のものまで閉じないように、それぞれの処理に待ち時間を設定している(時間は適当なので起動しながら調整してほしい)。

3. っていうか「連絡可能」にすればいいんでしょ?

2のコードを書きながら思っていたのだが…
単にMicrosoftTeamsを開いて状態を「連絡可能」にすればいいんじゃなかろうか?

つまりこういうことだ。

sample3.py
import pyautogui as pg
import time
try:
    while True:
        time.sleep(180)

        # Teamsを開く
        pg.hotkey('win','r')
        pg.typewrite('XXX\Teams.exe') # 起動ファイルはフルパスが必要
        pg.press('enter')
        time.sleep(10)

        # 状態を連絡可能に変更する
        pgui.press('/')
        pgui.typewrite('available')
        pg.press('enter')

except KeyboardInterrupt:
    print('仕事しよ')

こちらも解説はソース内のコメントのとおり。
処理待ちのtime.sleepが10秒と長めに取られているのは「起動に時間かかるなー」と感じたため。
MicrosftTeamsのデスクトップアプリはインストールするとデフォルトでスタートアップに登録されているため、単にアクティブにするだけならそこまで時間はかからないと思う(二重起動もしなかったはず…はず…)

さいごに

そもそもの発端となった元クライアントに「動かしました?」と聞くと、「バレるのヤだから使ってないよ!」とのこと。そんなものをおまいらはマジに動かしたというのか。。
仕事がなくてヒマというのなら、仕事を作ればいいんだよ…

というか私、こんなサボり推奨記事なんて書いていたらその内シバかれると思うんだぜ?

4
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
9