michimani.net

Google Apps Script で Slack のステータスを変更する

2020-06-12

ふと、 Google カレンダーの予定と Slack のステータスを連携させたいなと思い、 Google Apps Script でその処理を書いてみた話です。

概要

先に書いておきますが、冒頭で書いた 「Google カレンダーの予定と Slack のステータスを連携させたい」 というのは実現できませんでした。そういう便利なものは既に存在しているので、もし連携させたいなと思っている方は使ってみてください。

なので、今回はただ単に Google Apps Script (以下、GAS) で Slack のステータスを変更してみたという話になります。いわゆる供養ブログです。

(やりたかったこと)

GAS を実行するためのトリガーには次の 2 通りがあります。

時間主導型 は、いわゆる cron みたいな形式で実行タイミングを指定します。

カレンダーから は、 Google カレンダーと連動したトリガーとなります。この 連動 を、勝手に良いように解釈して 「予定の開始とか終了もトリガーにできるんじゃね?」 と思っていたのが間違いでした。 GAS のトリガーとして指定できるカレンダーの連動とは、 予定の変更 のようです。

GAS で Slack のステータス変更

では、供養する GAS の紹介です。

Slack のステータス変更は POST https://slack.com/api/users.profile.set のエンドポイントにリクエストします。

このエンドポイントではユーザ名やメールアドレスも変更できますが、ステータスを変更する場合は次のような payload を post します。

{
  "profile": {
    "status_emoji": ":ghost:",
    "status_text": "status message"
  }
}

status_emoji にはステータスの絵文字コードを指定します。存在しない絵文字を指定した場合は profile_status_set_failed_not_valid_emoji エラーとなります。 staus_emojistatus_text ともに空文字を指定すると、ステータスをリセットすることができます。

また、 GAS で外部 API にリクエストを送信するためには UrlFetchApp.fetch() を使用します。

まとめ

Google Apps Script で Slack のステータスを変更してみた話でした。

とくにまとめる内容もないですが、便利な仕組みはだいたい既に存在しているなと思いました。(小並)


comments powered by Disqus