LoginSignup
8
3

More than 1 year has passed since last update.

残業時間のうっかり超過をSlackBotで牽制してみたぁッッッッッ!!!!

Last updated at Posted at 2023-03-17

はじめに

どうも:v:QAエンジニアの川満Y哉です:trollface::sparkles:

チーム内で 「残業せずに帰ろうぜ。と思ってもなんだかんだ残ってるからメリハリつけたいね。」 って話が出ていた。
そこで普段コードを書かない自分がSlackbotを利用して残業時間の牽制を自動化したので記事にしてみます!!

マジで簡単なので、普段コードを書かない人でも出来ます:muscle:(多分)
※実際やってみて自分でもこんなん出来るんだ!ってなり嬉しかったし、楽しかった:notes:

課題感を整理

↓って感じなので自動で今の残業時間を通知してくれて、退勤時間前に帰宅を促すbotが欲しい。というのが結論。
image.png

課題に対してのアプローチ

具体的にどうする?
image.png

何でやる?

  • ってことで、これで行くぞ:dash:課題で達成したい通知を業務で使っているコミュニケーションツール(Slack)で通知する:star:
    • Slack IncomingWebhook
    • GoogleAppsScript
    • GoogleSpreadsheet

完成系

出来たやつ:boom:これで一向にかまわんッッッッ:exclamation::exclamation::exclamation::exclamation::exclamation::exclamation::exclamation:
image.png

まずはSlackで指定のコメントをどう送る??

めっちゃ簡単だった。GASのスクリプトにjson形式で送りたい文章の構成を作って、
SlackチャンネルのwebhookURLを指定してあげればOK。
※参考させて頂いた記事

function myFunction() {
 //表示する内容
 var options =
 {
   "method" : "post",
   "contentType" : "application/json",
   "payload" : JSON.stringify(
     {
       "username":"自動通知",
       "icon_emoji":":hatched_chick:",
       "text" :"<!channel>	メッセージ送信のテストです。",
       link_names: 1
     }
   )
 };
 //投稿先
UrlFetchApp.fetch("https://hooks.slack.com/services/hogehogefugafuga", options);
}

SlackAPIでメッセを送る時に全ての絵文字が利用できる訳ではない。
icon_emojiは基本なんでも(Slack上で追加した画像も)送れるけど、textはCHEAT SHEET のemojicodeじゃないとSlack上ではそのまんまcodeで表示されちゃう。
※参考

スプシの値を参照させるには??

スプシで集計した値をGASで参照して変数に格納し、
送信するメッセを形成する際に変数と文章を組み合わせて送信しちゃえば、Slackに通知したい目標は達成。
image.png

時間がヤバイ人にメンションをつけたい

SlackのユーザーIDをGET

残業時間がやばい人は早く帰宅しないといけないので、メンションをつけたい。
SlackAPIを通して通知を送る際にはSlackのユーザーIDが必要。入手は簡単。
image.png

ステータスを定義

通知したい情報を集計しているスプシにてステータスやメンションをつける境界を決めた。
この情報をGASで読み込みSlackで通知させる。

    • 39h以上
      • 強制送還(問答不要で帰ろう):cop:🚨
        • メンションつける:mega:
    • 30h以上
      • 頑張り過ぎだぞ:exclamation:目を覚ませ:alarm_clock:
        • メンションつける:mega:
    • 10h以下
      • 今日もお疲れ:white_flower:
        • メンションつけない:no_entry_sign:
          • 誰がどれだけ残業しているかだけお知らせ:zap:
            image.png

最後に

Slackでの通知以外でもスプシで関数を使って必要な情報同士を繋げて、
わかりやすい表現にしたり、条件にあうデータを参照したりする事で簡単に課題を解決する事ができたなーって思いました。

また運用を始めていく中で分岐の条件のバグを見つけたり、
こういう情報を追加しないと見せ方的に微妙だなーって気づきがあって、結構面白かったです!

みんなもやってみよう!!!最後まで読んでくれてありがとう御座いました!

8
3
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
8
3