KintoneとSlackの連携【個人メンション機能】

◆目的:kintoneでレコードのステータスが完了になった際に、レコードの作成者にSlackで個人メンションが飛ぶようにしたい。

◆結論:無理矢理な感じだがカスタムJavascriptを作成して達成できた。

◆手順/方法
1:cybozu.com共通管理 > 組織/ユーザー > ユーザー管理画面にて従業員IDにスラックのメンバーIDを登録する。
※従業員IDを使っている場合は、別途

kintone.getLoginUser()

にて取得可能な項目にメンバーIDを設定する。

2:アプリにslackのメンバーID記録用のフィールドを作成する。

3:新規レコード作成時に、手順2で作成したフィールドに、手順1で設定した値が入力されるカスタムJavascriptを作成する。

4:ステータスが完了に変わった際に、手順3にて記録したメンバーID宛のメンションがスラックに飛ぶカスタムJavascriptを作成する。

◆つまずいたところ/反省点
手順3のカスタムJavascriptの作成につまずいた。promiseを用いてメンバーIDを取得後にフィールドに自動反映させようとしたが、3時間くらいうまく動かなかった。諦めてasync/awaitに切り替えたところ5分で実装できた。
最初からasync/await使えばよかった、、、

◆カスタムJavascript

新規レコードが登録された際にSlackへ通知を送るJs,下記参照
https://crud-lab.hatenablog.com/entry/2016/04/07/090000

ステータスが"完了"になった際にSlackへ通知を送るJs,下記参照
https://developer.cybozu.io/hc/ja/articles/207419736-kintone%E3%81%8B%E3%82%89Slack%E3%81%AB%E9%80%9A%E7%9F%A5%E3%82%92%E9%80%81%E3%82%8B%E6%96%B9%E6%B3%95

ログインユーザーの従業員IDを取得してKintoneのフィールドへ反映させるJs

(()=> {
   kintone.events.on('app.record.create.show',async (event) => {
       
       const slack_userid = await kintone.getLoginUser().employeeNumber;
       event.record['フィールドID'].value = slack_userid
       return event
   })

})();

従業員IDを取得してからeventを返さないとフィールドに反映されないのでasync/awaitを利用しています。正直よくわからんけど動いてるところがある、、、

この記事が気に入ったらサポートをしてみませんか?