【kintone無料プラグイン】Slack通知プラグイン

## はじめに
カスタマイズスペシャリストの勉強を兼ねて、JSカスタマイズした内容をプラグインにしてみました。掲載内容に問題ありましたら、連絡下さると助かります。

このプラグインは以下の情報を参考にして作成しています。
- [kintoneのプラグインをつくってみた（その1）](https://hazime-style.com/?p=716)
- [kintoneからSlackに通知を送る方法](https://developer.cybozu.io/hc/ja/articles/207419736)
- [アプリのフォーム情報を取得するライブラリ kintone-config-helper について](https://developer.cybozu.io/hc/ja/articles/360023979211)

※この記事の続編として「足跡」機能を作ってみました。

https://qiita.com/n_none/items/272a556570f6e91bf8ad

## 概要
 + kintone 追加画面において、登録した内容をSlackに通知するプラグインです。
 + 設定画面で通知先、チャンネル、通知する内容の指定が行えます。

:::note alert
注意
・動作環境は、PCのみです。
・このプラグインは Incoming Webhook を利用しています。
　[※Slack-での-Incoming-Webhook-の利用方法の参考URL](https://cybozudev.zendesk.com/hc/ja/articles/207419736)
・動作保証や技術サポートはありません。自己責任でご利用ください。
:::
#### Ver.2 の変更点
・Slack通知切替機能を追加

#### Ver.3 の変更点
・通知タイトルにフィールドを指定する機能を追加

#### Ver.3.1 の変更点
・「タイトル」（固定）を指定したフィールド名に変更
・[カレンダー形式](https://jp.cybozu.help/k/ja/utility/app/calender.html)に対応する為、タイトルのフィールド指定に日付、日時を追加
・Slack通知切替有効時に「slack」フィールドが無いのに通知される問題を修正
・登録時のタイトルがフィールドコードになるバグを修正（2023/01/19）

#### Ver.4 の変更点
・フィールド値変更通知機能を追加

#### Ver.5 の変更点
・日時フォーマットを変更（Luxon利用に変更）
・本文追加、フィールド指定に文字列（1行）／（複数行）を選択可
・タイトル、本文を省略可

## 使い方
#### 設定1
システム管理者で slack_sample_plugin.zip をプラグインとして読み込んで下さい。
Slack通知したいアプリに本プラグインを追加してください。
プラグインの追加方法は[こちら](https://jp.cybozu.help/k/ja/admin/add_plugin/plugin.html)を参考にしてください。
![s1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/c5332848-40e5-e223-f98b-976ffaec7dea.png)
   
#### 設定2
プラグインの設定画面を開き、各項目に値を入力して下さい。
設定を保存して、アプリ更新を忘れずに行って下さい。![s2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/5eba1270-851a-9fd1-3c78-296c4e263ed4.png)

:::note warn
設定内容
   ・通知名
   ・Slackのワークスペースで発行したIncoming Webhook URL
　[※Slack-での-Incoming-Webhook-の利用方法の参考URL](https://cybozudev.zendesk.com/hc/ja/articles/207419736)
   ・通知させたいチャンネル名（# 不要）
:::

## 動作確認
アプリにレコードを新規登録して下さい。
Slackのワークスペースのチャンネルに設定した内容で通知が行われます。
![s3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/ef4b751c-910f-a579-d500-2c5b4b47c051.png)

:::note info
通知内容
・通知名
・投稿者（レコードの登録者）
・詳細（レコードのURL）   
:::
#### Ver.2
Slack通知切替ボタンを有効化するとラジオボタンの「slack」フィールドがONの時だけSlack通知を行います。
![s4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/946aa8fe-a4ad-082f-b505-83c4e322d072.png)
![s5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/726ca339-9dc5-b9a5-e2a6-1a17d9f6b330.png)

:::note alert
注意
・Slack通知切替有効化時に「slack」フィールドが存在しない場合は通知が行われません。
:::

#### Ver.3
アプリ設定で追加したフィールドをSlack通知のタイトルとして指定できます。
※Ver.3では文字列1行フィールドのみタイトルに指定できます。
![s6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/5134aa69-7ada-1bb4-e547-eb45f18f1ad8.png)
![s7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/63132175-5d00-199c-1ee8-42de02f26379.png)

:::note info
通知内容
・通知名
・タイトル（選択した文字列1行フィールド）
・投稿者（レコードの登録者）
・詳細（レコードのURL）   
:::

#### Ver.3.1
[カレンダー形式](https://jp.cybozu.help/k/ja/utility/app/calender.html)に対応する為、タイトルに日付と日時フィールドも指定可能になりました。
![00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/efe3bc7f-810d-6ea3-b91e-411805046d02.png)


上記対応に合わせて、通知の「タイトル」（固定）を指定したフィールド名に変更しました。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/d19ea5c6-da84-9b03-5e4e-7fe2ca43a66e.png)

:::note info
通知内容
・通知名
・指定したフィールド名：フィールドの値
・投稿者（レコードの登録者）
・詳細（レコードのURL）   
:::

#### Ver.4
フィールド値変更通知機能を追加しました。
![0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/6f82ab41-5905-2f98-915e-af9ede7d4058.png)


レコード編集画面でフィールド値が変更された時に通知が届きます。
通知の対象となるフィールドは [app.record.edit.change](https://cybozu.dev/ja/kintone/docs/js-api/events/edit/edit-change-event) で指定可能なフィールドとなります。
![ver4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/ce649fbd-a573-eee7-7aa6-085f1e8f0091.png)

:::note info
通知内容
・フィールド値の変更がありました。（固定）
・フィールド名（更新されたフィールド名）
・変更者（レコードの変更者）
・詳細（レコードのURL）   
:::
:::note alert
通知の対象となるフィールド
（[app.record.edit.change](https://cybozu.dev/ja/kintone/docs/js-api/events/edit/edit-change-event) で指定可能なフィールド）
・ラジオボタン
・ドロップダウン
・チェックボックス
・複数選択
・ユーザー選択
・組織選択
・グループ選択
・日付
・時刻
・日時
・文字列(1行)
・数値
・テーブル（テーブルの行追加、行削除ボタンがクリックされたタイミング）
:::

#### Ver.5
kintoneライセンスが無いユーザーも通知の詳細が知りたいとの要望があり本文を追加しました。
本文にはフィールド指定に文字列（1行）／（複数行）を選択可能です。
![5_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/7d367ab2-12ac-bcb8-930b-42d0748e3bc9.png)
タイトル、本文を未設定にすることでSlack通知時に表示させない事も可能になりました。
![ver5_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073813/6056db19-acbf-f41e-c9bc-04283cf7fbbd.png)

## 無料ダウンロード
ダウンロードしたZipファイルは解凍せず、そのままkintoneへインストールして下さい。
[slack_sample_plugin.zip](https://drive.google.com/uc?id=1zalWc9sw0JAf5l6AnmczTkGIWNrNiYad)

#### 利用ライブラリ
+ [kintone-config-helper - MIT License](https://developer.cybozu.io/hc/ja/articles/360023979211)
+ [51-modern-default.css - MIT License](https://developer.cybozu.io/hc/ja/articles/203302214)
+ [bootstrap.min.css - MIT License](https://getbootstrap.jp/)
+ [Cybozu CDN](https://developer.cybozu.io/hc/ja/articles/202960194)
#### 利用アイコン
+ [ICONE - 無料アイコン配布サイト](https://icone.unique-work.com/)