5
2

More than 1 year has passed since last update.

SlackのステータスをGoogleカレンダーの予定に合わせて自動更新してみる

Last updated at Posted at 2022-12-14

今回はGoogleカレンダーの予定をSlackステータスに反映させる処理を自動化しました。

社内のコミュニケーションツールにSlackを使っているので、Slackでメッセージを送る前にその人のステータスをチェックすれば、勤務時間内か、出社しているか、確認できて便利ですよね。

ただ、手動だと変え忘れることも多いので自動化できたらイイな!と思ってWarp使ってみたら簡単にできたので紹介します~。

SlackのGoogleカレンダーアプリを使えば?

SlackにはGoogleカレンダーアプリがあるので、そちらを使ってスケジュールを反映させることができます。
https://slack.com/apps/ADZ494LHY-google-calendar

image.png

ただ、標準アプリだとステータスが「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」をクリックして、必要な情報を入力します。
image.png

アプリの詳細ページから「OAuth & Permissions」>「Scope」でUser Token Scopesに”users.profile:write”を追加。
その後、「OAuth & Permissions」>「OAuth Tokens & Redirect URLs」で”Install to Workspace”をクリック。
image.png

取得した「User OAuth Token」をコピーして保存しておきます。
これでSlack側の設定は完了です。

処理の作成

それではフローの作成です!
image.png

こんな感じでシンプルなフローになりました。

「スケジュール取得」のGoogleCalendarGetコンポーネントでは、取得したいカレンダー項目を選択するだけで簡単にスケジュールの取得ができます。
image.png

「ステータス変更」のRESTコンポーネントでは以下のように設定しています。
URL:https://slack.com/api/users.profile.set
HTTPメソッド:POST
URLパラメータ:token, profile
URLパラメータのtokenではSlackアプリ設定で取得した「User OAuth Token」を指定します。

「JSON作成」のMapperコンポーネントでは、カレンダーの予定ごとにJSON形式のテキストを出力しています。
image.png

ステータステキストをカレンダーのタイトル、ステータス絵文字は状況に合わせて変えていて、例えばテレワークならお家の絵文字になるようにしました。
このJSONデータをURLパラメータのprofileにマッピングします。

結果を確認

実行すると・・・
image.png

無事にステータスが変更されました~。これを毎朝更新するように実行設定すれば自動で変更されます。
便利になりました:v:

5
2
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
5
2