(2021/1/11更新)
後述するツールはSkypeやSlack(Windowsデスクトップ版)でも退席中にしない効果があります。(※ブラウザ版の場合、ブラウザをアクティブ化しておく必要があります。)
こんにちは。私は今年はテレワークメインで仕事をしています。
このコロナ禍の中、テレワークをしている方も多いかと思いますが、テレワークはテレワークならでは悩みもありますよね。
その中でも先日友人とオンライン飲みをした際に話題になったのが、
テレワーク中のサボりチェック
確かにテレワークしているとサボる人もいるから気になりますよね。
サボりは良くないですが、今回の友人達の話では以下のようなことがあったとき、MicrosoftのTeams上で「退席中」になってしまうことでトラブルがあったとのこと。
- お腹が痛くてトイレに行った
- コーヒーを淹れていた
- 別のPC側での作業を行っていた
- 紙の書類を作成していた
- 郵便や宅配物が届き応対した
- 電話がかかってきて対応した
- 家族(お子さん)に呼ばれた
トイレや飲み物程度は問題無いと思いますし、別の作業は業務上必要であれば真っ当に仕事をしているワケです。
また、家にいる以上来客や電話、お子さんの対応等は仕方が無いでしょう。
しかし、サボりパトロール隊は業務上の要件がなくとも
さっき退席中の時間があったけど、サボってただろ?
となるようで、それが多大なストレスになっているとのこと。
生産しないけど監視だけしたがる人、確かにいますよね…。
ということで、今回Teamsについて調べて退席中にしない方法を記事にしてみました。
どんな時に退席中表示になるか?
以下の条件で退席中表示となるようです。
- 手動で「退席中」に設定した場合
- PCをロックした場合
- PCやスマホを5分放置した場合
ネックとなるのが、「5分放置」ということですね。
各種プレゼンスについて
退席中以外のプレゼンスは以下の通りです。
- 連絡可能(アクティブかつカレンダに予定がない場合)
- 取り込み中
- 応答不可(会議中や通話中もコレに該当)
- 一時退席中
- 退席中
- オフライン(サインアウト時)
まぁ理想的なのは「連絡可能」(緑色)になっていることかと思います。
「一時退席中」はパッと見「退席中」と表示は一緒なので…。
退席中にしない方法
5分放置問題を避けて退席中にしない方法は以下の通りです。
- 取り込み中・応答不可にしておく
- 誰かと通話状態にしておく
- オフラインにしておく(サインアウト)
- 5分経つ前にマウス・キーボードを動かす
真ん中2つはそもそも目的に反しそうですね。
一番まともなのは1つ目かと思います。(あまり長時間だと色々言われそうですが…)
4つ目についてはツールを作れば対応できますね。
Teamsを退席中にしないツール
※本項は自己責任でお願いします
レジストリを弄ったり、外部からダウンロードしたりすることが制約上できず、開発環境も無いことを考慮し、VBSであれば簡単に対応できるかと思います。
(社内PCとかだと制約が多いですよね。)
5分以内に何かしら、マウスやキー入力をさせればよいので、今回はキー入力を一定時間毎に行うスクリプトを用意しました。
strSendKey = "{F13}"
intSleepTime = 290000
strQuery = "Select * FROM Win32_Process WHERE (Caption = 'wscript.exe' OR Caption = 'cscript.exe') AND " _
& " CommandLine LIKE '%" & WScript.ScriptName & "%'"
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer
Set Res = Service.ExecQuery(strQuery)
Dim cnt
cnt = 0
If Res.Count > 1 Then
strMsg = "送信処理を停止します。"
If MsgBox(strMsg , vbYesNo + vbQuestion) = vbYes Then
For Each proc In Res
cnt = cnt + 1
If cnt <> Res.Count then
proc.Terminate
End If
Next
End If
WScript.Quit 0
Else
strSleepTime = CStr(intSleepTime/1000)
strMsg = strSleepTime & "秒毎に" & strSendKey &"を送信します。"
If MsgBox(strMsg , vbYesNo + vbQuestion) = vbYes Then
Call StopScript(strSendKey, intSleepTime)
End If
End If
WScript.Quit 0
Sub StopScript(key, sleepTime)
Set WsShell = CreateObject("Wscript.Shell")
Do
WsShell.SendKeys(key)
WScript.Sleep sleepTime
Loop
End Sub
上記の右上のCOPYボタンでコピーできます。
上記の場合F13キーを入力させています。
通常のキーボードであればF12までしかありませんが、実はF13キー以降も存在します。
一般的には使われないため、キー割り当てがされてないため一定時間毎に入力されても悪影響が無いよう上記の設定としました。
また、5分以内ということで290秒毎に送信するように設定しました。
使い方は簡単、上記の内容をテキストファイルにコピー(もしくは入力)して保存。
保存時のファイルの拡張子を「.vbs」にすること。

Windowsのメモ帳で編集する場合、ファイルの種類を「すべてのファイル」、文字コードを「ANSI」に設定して保存してください。

保存したファイルをダブルクリックして実行すればOKです。


処理を停止する際には再度実行して、送信処理を停止します。

まとめ
テレワークで実施する以上は自宅環境によって多少の融通はきかせてほしいものです。
とは言え、勤務中はサボって時間を稼ぐ人も多いのでしょうから監視したくなる気持ちもわかります。
何時間働いたか、よりも成果で評価するような会社が増えると変わってくるのかなぁ…
とりあえず、この情報が役に立ったら幸いです。
スクリプトを会社の端末で実行させる場合は自己責任&悪用厳禁で!
なお、テレワークで得られるメリットについては以下を参照してみてください。