はじめに
どうもQAエンジニアの川満Y哉です
チーム内で 「残業せずに帰ろうぜ。と思ってもなんだかんだ残ってるからメリハリつけたいね。」 って話が出ていた。
そこで普段コードを書かない自分がSlackbotを利用して残業時間の牽制を自動化したので記事にしてみます!!
マジで簡単なので、普段コードを書かない人でも出来ます(多分)
※実際やってみて自分でもこんなん出来るんだ!ってなり嬉しかったし、楽しかった
課題感を整理
↓って感じなので自動で今の残業時間を通知してくれて、退勤時間前に帰宅を促すbotが欲しい。というのが結論。
課題に対してのアプローチ
何でやる?
- ってことで、これで行くぞ課題で達成したい通知を業務で使っているコミュニケーションツール(Slack)で通知する
- Slack IncomingWebhook
- GoogleAppsScript
- GoogleSpreadsheet
完成系
まずは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に通知したい目標は達成。
時間がヤバイ人にメンションをつけたい
SlackのユーザーIDをGET
残業時間がやばい人は早く帰宅しないといけないので、メンションをつけたい。
SlackAPIを通して通知を送る際にはSlackのユーザーIDが必要。入手は簡単。
ステータスを定義
通知したい情報を集計しているスプシにてステータスやメンションをつける境界を決めた。
この情報をGASで読み込みSlackで通知させる。
- 例
最後に
Slackでの通知以外でもスプシで関数を使って必要な情報同士を繋げて、
わかりやすい表現にしたり、条件にあうデータを参照したりする事で簡単に課題を解決する事ができたなーって思いました。
また運用を始めていく中で分岐の条件のバグを見つけたり、
こういう情報を追加しないと見せ方的に微妙だなーって気づきがあって、結構面白かったです!
みんなもやってみよう!!!最後まで読んでくれてありがとう御座いました!