テーブルの管理:通知
## 概要
期限付きテーブルなどでレコードの新規作成や更新、削除などの操作を行った際に、メールまたはTeamsやSlack、Chatworkなどのコミュニケーションツールに自動通知する機能です。[ビュー](/manual/table-record-view)と組み合わせることで、通知の条件を指定することができます。
## 制限事項
1. 一括更新による通知の場合、固定のメールアドレスにのみ通知可能です。[RelatedUsers]や[担当者]などは使用できません。
1. 件名の設定は作成、更新、削除、コピーの場合のみ有効となります。
## 設定画面
![image](https://pleasanter.org/binaries/e4ef72faa24c49759a21e531b1444683)
該当のテーブルを開いた状態でナビゲーションメニューより「管理」-[テーブルの管理](/ja/manual/table-management)をクリックしてください。
※サイトの管理権限が無いユーザには表示されません。
![image](https://pleasanter.org/binaries/4b88cb2146bb4e37b22e1224b2919ea0)
### 詳細項目
|項目名|説明|設定方法|
|:---|:---|:---|
|ID|通知の管理ID|編集不可|
|通知種別|通知の種別を指定|メール、Slack、ChatWork、LINE、LINEグループ、Teams、Rocket.Chat、InCircle、HTTPクライアントから選択|
|プレフィックス|通知のタイトルの先頭に付加する文言|任意の文言を入力|
|件名|通知のタイトルに記載する文言|任意の文言を入力。未入力時はシステム固定の文言※1|
|アドレス|通知先を指定|任意のメールアドレス、WebHook、roomIDのURL、またはLINEのUserID、GroupIDを入力|
|Cc|通知メールのCcに設定するアドレスを指定|任意のメールアドレスを入力。通知種別がメールの場合のみ指定可能。|
|Bcc|通知メールのBccに設定するアドレスを指定|任意のメールアドレスを入力。通知種別がメールの場合のみ指定可能。|
|トークン※2|chatworkのトークンまたは、LINEボットアカウントのアクセストークンを指定|取得したchatworkのトークンまたはLINEボットアカウントのアクセストークンを入力|
|カスタムデザインを使用|カスタムデザインの使用を指定|カスタムデザインを使用する場合はチェックON|
|書式※3|通知の本文に出力する書式|本マニュアルで後述|
|変更前の条件※3|変更前の条件として指定するビューを指定|任意のビューを指定|
|論理式※4|変更前後の条件を指定|And、Orから選択|
|変更後の条件※4|変更後の条件として指定するビューを指定|任意のビューを指定|
|通知タイミング|通知タイミングを指定|本マニュアルで後述|
|変更を監視する項目※5|レコードの更新が発生した場合に変更を監視する項目を指定|任意の項目を有効化/無効化|
※1. 件名には "[項目名]" という文字列を記載することで項目の値、"[NotificationTrigger]" という文字列を記載することでユーザが行った操作の文字列(作成/更新/削除)を挿入することができます。
(例) 件名に "[NotificationTrigger]通知 - 【[状況]】[タイトル]" を設定した場合
・レコード作成時
"作成通知 -【未着手】レコードのタイトル"
・レコード削除時
"削除通知 -【未着手】レコードのタイトル"
未設定の場合は、作成・更新・削除時の成功メッセージと同じ文言です。(「〇〇を作成しました。」等)
※2.ChatWork、LINE、LINEグループ、InCircleを指定した場合に表示されます。
※3.「カスタムデザインを使用する」がチェックONの場合に表示されます。
※4.ビューを設定している場合に表示されます。
※5.通知タイミングが「更新後」の場合のみに利用します。
## 通知種別を指定する
通知種別を指定します。以下の通知種別のうち、[パラメータ設定:Notification.json](/ja/manual/notification-json)で有効化したものを選択できます。
|通知種別|説明|
|:--|:--|
|メール|[プリザンターからメールを送信できるように設定する](/manual/smtp-mail)|
|Slack|[Slackに通知できるように設定する](/manual/slack)|
|ChatWork|[Chatworkに通知できるように設定する](/manual/chatwork)|
|LINE|[LINEに通知できるように設定する(個々のユーザーに対して通知を行う場合)](/manual/line)|
|LINEグループ|[LINEに通知できるように設定する(LINEグループに対して通知を行う場合)](/manual/line)|
|Teams|[Microsoft Teamsに通知できるように設定する](/manual/teams)|
|Rocket.Chat|[Rocket.Chatに通知できるように設定する](/manual/rocketchat)|
|InCircle|[InCircleに通知できるように設定する](/manual/incircle)|
|HTTPクライアント|[HttpClientで任意のURLにリクエストを送る](/manual/httpclient)|
※メールで通知する場合はメール送信の設定が必要です。
## 通知のタイミングを指定する
通知するタイミングを指定します。設定画面にあるチェックボックスをそれぞれオンにしたタイミングで通知されます。
|通知タイミング|説明|通知件名の例|
|---|---|---|
|作成後|編集画面でレコードを新規作成後に通知されます。|" [タイトル] " を作成しました。|
|更新後|編集画面でレコードを更新後に通知されます。|" [タイトル] " を更新しました。|
|削除後|編集画面でレコードを削除後に通知されます。|" [タイトル] " を削除しました。|
|コピー後|編集画面でレコードをコピー後に通知されます。|" [タイトル] " を作成しました。|
|一括更新後|一覧画面でレコードを一括更新後に通知されます。|[テーブル名]: ○ 件 一括更新しました。|
|一括削除後|一覧画面でレコードを一括削除後に通知されます。|[テーブル名]: ○ 件 一括削除しました。|
|インポート後|一覧画面でレコードをインポート後に通知されます。|[テーブル名]: ○ 件追加し、○ 件更新しました。|
|無効|対象の通知設定が無効化され、通知は行われません。|-|
## メール通知の宛先を動的に設定する
メール通知の宛先は特定のメールアドレスだけではなく、担当者や管理者などのほか、任意の項目で指定されたメールアドレスを宛先にすることができます。
この設定は「アドレス」「Cc」「Bcc」の項目で利用可能です。
## 宛先に指定できる対象
|対象|挙動|
|---|---|
|固定のメールアドレス(example@example.com)|対象レコードの全てが指定した固定アドレスに送信されます。複数の固定アドレスを指定した場合には、全ての固定アドレスをTOとして送信します|
|担当者、管理者|対象レコードの担当者、管理者に指定されたユーザのメールアドレスに送信します|
|タイトル、内容、分類、説明|対象レコードのタイトル、内容、分類、説明に記載されたメールアドレスすべてに送信します。メールアドレスはカンマ区切りまたは改行区切りで指定することができます|
### レコードの関係者宛にメールを通知する設定
通知種別でメールを選択し、アドレスに[RelatedUsers]と入力します。この設定を行うと、レコードの作成者、更新者、管理者、担当者のいずれかに該当するユーザのメールアドレスに通知が行われます。対象者のチェックはレコードの更新履歴も含みます。対象者にメールアドレスが設定されていない場合には、通知は行われません。
### 設定例と送信結果
通知の宛先を下記のように設定した場合、下表に示すレコードの内容に合わせた宛先に動的にメールが送信されます。
### 設定例
以下のように設定した場合、example@example.com宛には固定で通知が送られ、加えてレコードごとに登録された担当者、および内容にメールアドレスが記載されている場合は、そちらのアドレスにも通知メールが送信されます。
```text
example@example.com, [担当者], [内容]
```
![image](https://pleasanter.org/binaries/64ced18b5493403cade63ca46da7b32b)
![image](https://pleasanter.org/binaries/dd4a6cd0fd6a424288ab645f558e962c)
## ユーザ/組織/グループでの動的な宛先指定
通知種別が「メール」の場合は、動的に宛先を指定することができます。ただし、無効となっているユーザ/組織/グループには通知されません。
### アドレスにIDを直接指定する
アドレスにユーザID/組織ID/グループIDを直接指定できます。ユーザ/組織/グループの名称は表示されませんので、指定するIDに誤りがないようにご注意ください。
設定例:
|No|アドレスの指定|説明|
|:--|:--|:--|
|1|[User1]|ユーザID:1のユーザに通知されます。|
|2|[Dept1]|組織ID:1に所属するユーザに通知されます。|
|3|[Group1]|グループID:1に所属するユーザ/組織に通知されます。|
### アドレスに分類項目を指定する
アドレスに[ユーザの選択肢一覧](/ja/manual/table-management-choices-text-users)[組織の選択肢一覧](/ja/manual/table-management-choices-text-depts)[グループの選択肢一覧](/ja/manual/table-management-choices-text-groups)を設定した分類項目を指定できます。レコード単位で設定されているユーザ/組織/グループで動的に宛先を変えたい場合に利用します。分類項目が[複数選択](/ja/manual/table-management-multiple-selections)の設定となっている場合は、複数選択のすべてに通知されます。
設定例:
|No|分類Aの表示名|分類Aの選択肢一覧|アドレスの指定|説明|
|:--|:--|:--|:--|:--|
|1|ユーザ|[[Users]]|[ユーザ]|対象レコードの分類Aに設定されたユーザに通知されます。|
|2|組織|[[Depts]]|[組織]|対象レコードの分類Aに設定された組織に所属するユーザに通知されます。|
|3|グループ|[[Groups]]|[グループ]|対象レコードの分類Aに設定されたグループIDに所属するユーザ/組織に通知されます。|
## 通知メッセージ
### 通知を構成する書式要素
通知の本文は、次の要素で構成されます。
1. 固定文字列
2. プレースホルダ
3. 書式指定文字列
<style>
details {
border: 1px solid #aaa;
border-radius: 4px;
padding: .5em .5em 0;
background-color: #f1f1f1;
}
summary {
font-weight: bold;
margin: -.5em -.5em 0;
padding: .5em;
}
details[open] {
padding: .5em;
}
details[open] summary {
border-bottom: 1px solid #aaa;
margin-bottom: .5em;
}
</style>
<details>
<summary>各要素の詳細はここをクリックして展開される内容をご参照ください</summary>
#### 固定文字列
任意の文字列を固定文字列として記載可能です。
なお、後述のとおり、「書式指定文字列」とは別の行とする必要があります。
#### プレースホルダ
以下のプレースホルダが利用可能で、それぞれ置換文字列に置き換えて通知されます。
固定文字列およびプレースホルダを同一行に混在可能です。
プレースホルダは、波括弧および英字について本マニュアルの記述と厳密に一致させる必要があります。
|プレースホルダ|置換文字列|
|----|----|
|{Url}|レコードのURLに置換されます|
|{LoginId}|操作したユーザのログインIDに置換されます|
|{UserName}|操作したユーザの名前に置換されます|
|{MailAddress}|操作したユーザのメールアドレスに置換されます|
#### 書式指定文字列
次の属性で構成される JSON オブジェクトを 1 行の文字列として記述することで、データ項目を本文に展開できます。
書式指定文字列は、行単位で処理されるため、改行を含まないように記述します。また、同一行に複数の書式指定文字列を配置したり、プレースホルダ・固定文字列を混在させてはなりません。
Name は必須となります。その他の項目は既定値が設定され、省略した場合は、既定値が指定されたものとなります。属性名はケースセンシティブであり、大文字小文字を正確に記述する必要があります。
|属性名|挙動|
|--|--|
|Name|出力したい項目の表示名を[表示名]と記述します|
|Prefix|出力する項目の先頭にプレフィックスを付与することができます。既定値は空文字列です|
|Delimiter|項目の表示名の後に表示する区切り文字です。既定値は“ : ”です|
|Always|変更が無い場合でも出力する場合はtrueにします。既定値はfalseです|
|ValueOnly|項目名および Delimiter を表示せず、項目の値のみ表示します。既定値はfalseです|
|ConsiderMultiline|MarkDown形式の項目で、項目名 Delimiter の直後および Allow の前後で改行します。既定値はtrueです|
|DiffTypes|更新前後の差分の表示方式を指定します。<br>・Standard: 古い値と新しい値を個別に表示します。<br>・DiffMatchPatch: 値の差分(追加、削除された部分)で表現します。<br>既定値は Standardです。|
|DisplayTypes|DiffTypesがStandardの場合に、更新した際に古い値と新しい値の両方を表示するか(BeforeAndAfterChange)、古い値のみを表示するか(BeforeChange)、新しい値のみを表示するか(AfterChange)選択して指定します。既定値は“BeforeAndAfterChange”です。|
|Allow|DiffTypesがStandardの場合に、更新した際に古い値と新しい値の間に表示する区切り文字です。既定値は“ => ”です。|
|StartBracket|DiffTypesがDiffMatchPatchの場合に、差分表記の開始を表す文字列を指定します。既定値は"("です。|
|EndBracket|DiffTypesがDiffMatchPatchの場合に、差分表記の終了を表す文字列を指定します。既定値は")"です。|
|DeletePrefixSymbol|DiffTypesがDiffMatchPatchの場合に、削除された部分の開始を表す文字列を指定します。既定値は"-"です。|
|DeleteSuffixSymbol|DiffTypesがDiffMatchPatchの場合に、削除された部分の終了を表す文字列を指定します。既定値は""(空文字)です。|
|AddPrefixSymbol|DiffTypesがDiffMatchPatchの場合に、追加された部分の開始を表す文字列を指定します。既定値は"+"です。|
|AddSuffixSymbol|DiffTypesがDiffMatchPatchの場合に、追加された部分の終了を表す文字列を指定します。既定値は""(空文字)です。|
一例として、次のように表現します。
```json
{"Name":"[作業工程]","Prefix":"■","Delimiter":" : ","Allow":" => ","Always":true}
```
この書式での出力は次のようになります。
|変更がある場合の出力結果|変更が無い場合の出力結果|
|:--:|:--:|
|■作業工程 : 設計 => 開発|■作業工程 : 設計|
##### DiffTypesによる出力の違いの例
1. DiffTypesがStandardの場合
設定内容
```json
{"Name":"[タイトル]"}
```
出力結果
```
タイトル : ドキュメント作成 => 設計書作成作業
```
2. DiffTypesがDiffMatchPatchの場合
設定内容
```json
{"Name":"[タイトル]","DiffTypes":"DiffMatchPatch"}
```
出力結果
```
タイトル : (-ドキュメント)(+設計書)作成(+作業)
```
3. DiffMatchPatchの書式をカスタマイズした場合
設定内容
```json
{"Name":"[タイトル]", "DiffTypes":"DiffMatchPatch", "StartBracket":"[", "EndBracket":"]", "DeletePrefixSymbol":"del:", "DeleteSuffixSymbol":"/del", "AddPrefixSymbol":"add:", "AddSuffixSymbol":"/add"}
```
出力結果
```
タイトル : [del:ドキュメント/del][add:設計書/add]作成[add:作業/add]
```
</details>
### メッセージ本文
#### デフォルトメッセージ
デフォルトのメッセージ文として、次の書式が利用されます。
なお、下記における `項目名N` はテーブルの全ての項目が列挙されて含まれる繰り返しの項目となります。
```text
{Url}
{"Name":"[項目名N]"}
{UserName}<{MailAddress}
```
#### カスタムデザインの利用
前述の書式要素を利用して、通知本文をカスタマイズすることができます。
<details>
<summary>設定例はここをクリックして展開される内容をご参照ください</summary>
![image](https://pleasanter.org/binaries/b477755e58f74bb18a4b737ae572aee2)
上記のような書式を設定すると、以下のように通知されます。
```text
以下の情報が更新されました!
http://servername/items/999/edit
★タイトル ☆ ネットワーク要件を確認する ◆ ネットワーク要件と機器を確認する
コメント : 要件定義書の作成、完了しました。成果物は所定のフォルダに格納済です。
山口太郎< taro@yamaguchi123.co.jp >
```
</details>
## 対応バージョン
|対応バージョン|内容|
|:--|:--|
|1.2.26.0 以降|作成後/更新後/削除後の通知タイミングを追加|
|1.3.2.0 以降|コピー後/一括更新後/一括削除後の通知タイミングを追加|
|1.3.3.0 以降|インポート後の通知タイミングを追加|
|1.3.9.0 以降|ユーザ/組織/グループでの動的な宛先指定としてアドレスに分類項目を指定する機能を追加|
|1.3.10.0 以降|ユーザ/組織/グループでの動的な宛先指定としてアドレスにIDを直接指定する機能を追加|
|1.3.17.0 以降|HTTPクライアントを利用した通知機能を追加|
|1.4.8.0 以降|DiffMatchPatch形式で値の差分を表示する機能を追加|
|1.4.10.0 以降|メールの宛先にCc、Bccを追加|