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を利用しています。正直よくわからんけど動いてるところがある、、、
この記事が気に入ったらサポートをしてみませんか?