こんにちは、ナガタです。
全社テレワークになってからあっという間に1年が経ちました。
アステリアでは4月からも全社テレワークが継続され、さらに全社スーパーフレックス勤務が導入されました!
つまり、毎月決まった時間分働けば、10時間勤務の日があっても2時間勤務の日があってもOKです。好きな場所で好きな時間に働けるようになったんですね~。自由!
そうなると誰がいつどこで働くかわからなくなるので、Googleカレンダーに勤務時間や出社状況などを入力して共有するようにしています。
でも、軽く話かけたいだけなのに「今勤務中かな?」「出社してるかな?」とわざわざGoogleカレンダーで調べるのはちょっと面倒…。
ということで、Slackステータスを活用してみました!
アステリアでは社内のコミュニケーションツールにSlackを使っているので、Slackでメッセージを送る前にその人のステータスをチェックすれば勤務時間内かどうか、出社しているかどうかを確認することができます。
目次
SlackにはGoogleカレンダーと連携するためのアプリがあるので、こちらをインストールしてみます。
そうすると、ステータスが下のように変わりました!
でも、ステータスは「In a meeting • Google Calendar」で固定になっている。うーん、会議中じゃなんだよなぁ。それに休暇予定もカレンダーに登録しているから、休みなのか仕事中なのか判断できないよ。
もっと予定に合わせてステータス内容を変えられるアプリないかな?
…う~ん、なさそう。ないならASTERIA Warpで作っちゃおう!
Googleカレンダーから予定を取得して、その内容をもとに勤務時間や休暇情報をSlackステータスに表示される処理をつくります!
処理の流れは大きく分けて2つ。
Googleカレンダーからの予定取得はASTERIA WarpのGoogle Calenderアダプターを利用すれば簡単に取得ができます!
Slackステータスは、Slack APIを使うとできそうです。
今回は手軽に連携できそうなトークンを利用したステータス変更を行ってみます。
まずは、Slack APIを使うためにSlackアプリを作成します。
作成されたアプリ > 「Create New App」をクリックして、必要な情報を入力します。
アプリの詳細ページから「OAuth & Permissions」>「Scope」でUser Token Scopesに”users.profile:write”を追加。
その後、「OAuth & Permissions」>「OAuth Tokens & Redirect URLs」で”Install to Workspace”をクリック。
取得した「User OAuth Token」をコピーして保存しておきます。
これでSlack側の設定は完了です。
それではフローの作成です!
こんな感じでシンプルなフローになりました。
「スケジュール取得」のGoogleCalendarGetコンポーネントでは、取得したいカレンダー項目を選択するだけで簡単にスケジュールの取得ができます。
「ステータス変更」のRESTコンポーネントでは以下のように設定しています。
URL:https://slack.com/api/users.profile.set
HTTPメソッド:POST
URLパラメータ:token, profile
URLパラメータのtokenではSlackアプリ設定で取得した「User OAuth Token」を指定します。
「JSON作成」のMapperコンポーネントでは、カレンダーの予定ごとにJSON形式のテキストを出力しています。
ステータステキストをカレンダーのタイトル、ステータス絵文字は状況に合わせて変えていて、例えばテレワークならお家の絵文字になるようにしました。
このJSONデータをURLパラメータのprofileにマッピングします。
実行すると…
無事にステータスが変更されました~。これを毎朝8時に更新するように実行設定すればOKです。
いかがでしたか?今回はGoogleカレンダーの予定をSlackステータスに連携してみました。
テレワークだと相手の様子がわからず話しかけていいか不安になりますが、個人の勤務状況をわかりやすく伝えることでコミュニケーションのハードルが少しでも下がると嬉しいですね。
ASTERIA Warpのプリセールや体験セミナー講師を担当しつつ技術から営業スキルまで、上司の下で日々勉強中の通称”ナガタ”です。
Related Posts
ASTERIA Warp製品の技術情報やTips、また情報交換の場として「ADNフォーラム」をご用意しています。
アステリア製品デベロッパー同士をつなげ、技術情報の共有やちょっとしたの疑問解決の場とすることを目的としたコミュニティです。