今回はGoogleカレンダーの予定をSlackステータスに反映させる処理を自動化しました。
社内のコミュニケーションツールにSlackを使っているので、Slackでメッセージを送る前にその人のステータスをチェックすれば、勤務時間内か、出社しているか、確認できて便利ですよね。
ただ、手動だと変え忘れることも多いので自動化できたらイイな!と思ってWarp使ってみたら簡単にできたので紹介します~。
SlackのGoogleカレンダーアプリを使えば?
SlackにはGoogleカレンダーアプリがあるので、そちらを使ってスケジュールを反映させることができます。
https://slack.com/apps/ADZ494LHY-google-calendar
ただ、標準アプリだとステータスが「In a meeting • Google Calendar」で固定になってしまいます。休暇予定もカレンダーに登録しているから、休みなのか仕事中なのか判断できない。。
もっと予定に合わせてステータス内容を変えたい!!
ASTERIA Warpで理想のSlack-Googleカレンダー連携を実現!
ということでASTERIA Warpを使って、Googleカレンダーから予定を取得して、その内容をもとに勤務時間や休暇情報をSlackステータスに表示される処理をつくります!
処理の流れ
処理の流れは大きく分けて2つ。
①Googleカレンダーから予定を取得
②Slackステータスを変更
Googleカレンダー連携の事前設定
Googleカレンダーからの予定取得はASTERIA WarpのGoogle Calenderアダプターを利用すれば簡単に取得ができます!詳しい手順は Google カレンダーアダプターの紹介 を見て設定しました。
Slack連携の事前設定
Slackステータスは、Slack APIを使うとできそうです。
> User presence and status
今回は手軽に連携できそうなトークンを利用したステータス変更を行ってみます。
まずは、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にマッピングします。
結果を確認
無事にステータスが変更されました~。これを毎朝更新するように実行設定すれば自動で変更されます。
便利になりました