https://github.com/clear-code/typical-reply-outlook
Typical Reply for Outlook
https://github.com/clear-code/typical-reply-outlook
Last synced: 4 months ago
JSON representation
Typical Reply for Outlook
- Host: GitHub
- URL: https://github.com/clear-code/typical-reply-outlook
- Owner: clear-code
- License: isc
- Created: 2023-09-05T06:06:12.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-07-28T08:14:56.000Z (11 months ago)
- Last Synced: 2025-07-28T10:11:24.041Z (11 months ago)
- Language: C#
- Size: 206 KB
- Stars: 0
- Watchers: 8
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# typical-reply-outlook
## 概要
定型文での返信を提供するOutlook向けアドオンです。
例えば、以下のメールを受信したとします。
```
件名:
例の件について
本文:
お疲れ様です。
例の件について以下の案を考えてみたのですが、いかがでしょうか?
http://...
```
このとき、以下のいずれかの手順ですぐに定型文で返信することができます。
* リボンの「Typical Reply」ボタンから、「いいね!」を選択

* メールを右クリックして表示されるコンテキストメニューの「Typical Reply」ギャラリーから、「いいね!」を選択

```
Subject:
[[いいね!]]: Re: 例の件について
Body:
いいね!
> -----Original Message-----
> お疲れ様です。
> 例の件について以下の案を考えてみたのですが、いかがでしょうか?
> http://...
```
これらの返信内容の設定はグループポリシーによってドメイン単位での一元管理が可能です。
個別の設定ファイルによるユーザー単位での設定変更も可能です。
## グループポリシーによる設定
policy配下のadmx、admlファイルをグループポリシーファイルを以下のパスに配置します。
* Active Directoryのグループポリシーに追加する場合
* `C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions`
* ローカルグループポリシーに追加する場合
* `C:\Windows\PolicyDefinitions`
グループポリシーエディターを開き、 管理用テンプレート -> TypicalReply -> 既定値 -> TypicalReply設定 を開きます。
この設定を有効にし、テキストエリアに後述のJSONでの設定を記載します。
## デフォルト設定ファイルによる設定
デフォルト設定ファイルは以下の箇所に存在します。
`C:\Program Files\TypicalReply\TypicalReplyConfig.json`
このファイルに後述のJSONでの設定を記載します。
## ユーザー設定ファイルによる設定
ユーザー設定ファイルは以下の箇所に存在します。
`%APPDATA%\TypicalReply\TypicalReplyConfig.json`
このファイルに後述のJSONでの設定を記載します。
## 複数の設定が存在する場合の優先度
グループポリシーの設定、デフォルト設定ファイル、ユーザー設定ファイルによる設定で、優先度が異なる場合、最も優先度が高い設定が使用されます。
優先度が同じ場合、グループポリシー、デフォルト設定ファイル、ユーザー設定ファイルの順に内容がマージされます。
* GroupLabelは最後の設定のものが使用されます(指定していた場合)。
* ButtonConfigListは各内容がマージされます。
* 重複したIDのButtonConfigは最後の設定のものが使用されます。
* 重複しないIDのButtonConfigは追加されます。
## インストーラーでのデフォルト設定ファイルのインストール
セットアップの存在するフォルダに `DefaultConfig\TypicalReplyConfig.json` を配置した状態でセットアップを実行することで、
セットアップ実行時に自動で `C:\Program Files\TypicalReply\TypicalReplyConfig.json` にファイルが配置されます。
## 設定項目
設定は以下のようなJSON形式で指定します。
```
{
"Priority" : 1,
"ConfigList": [
{
"Culture": "ja-JP",
"GroupLabel": "定型返信",
"ButtonConfigList": [
{
"Id": "Like",
"Label": "いいね!",
"SubjectPrefix": "[[いいね!]]:",
"Body": "いいね!",
"Recipients": ["all"],
"QuoteType": true,
"AllowedDomains": [
"*"
]
},
{
"Id": "OK",
"Label": "了解",
"SubjectPrefix": "[[了解]]:",
"Body": "了解しました。",
"Recipients": ["all"],
"QuoteType": true,
"AllowedDomains": [
"*"
]
}
]
},
{
"Culture": "en-US",
"GalleryLabel": "Typical Reply",
"ButtonConfigList": [
{
"Id": "Like",
"Label": "Like!",
"SubjectPrefix": "[[Like!]]:",
"Body": "Like!",
"Recipients": ["all"],
"QuoteType": true,
"AllowedDomains": [
"*"
]
},
{
"Id": "OK",
"Label": "OK",
"SubjectPrefix": "[[OK]]:",
"Body": "OK.",
"Recipients": ["all"],
"QuoteType": true,
"AllowedDomains": [
"*"
]
}
]
}
]
}
```
TypiclReplyConfig: 設定のルート
| 設定名 | 型 | 必須 | 省略時のデフォルト | 概要 |
| ---------- | -------------- | ---- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| Priority | 数値 | no | -1 | レジストリと設定ファイルのどちらの設定を使うかの優先度。
値が大きい方が使用される。
値が同じ場合は設定がマージされる。 |
| ConfigList | Configのリスト | yes | - | 各言語ごとの設定(Config)のリスト |
Config: 各言語ごとの設定
| 設定名 | 型 | 必須 | 省略時のデフォルト | 概要 | 例 |
| ------------------------- | -------------------- | ---- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------- |
| Culture | 文字列 | no | null | 対象となるカルチャ。
ロケールなしの言語のみを指定することも可能です。
現在のカルチャにマッチするCultureがない場合、Cultureの値に関わらず先頭のConfigを使用します。 | `"ja-JP"`、`"ja"` |
| GroupLabel | 文字列 | no | `"Typical Reply"` | リボンやコンテキストメニューに表示される本機能のラベル | `"定型返信"` |
| TabMailInsertAfterMso | 文字列 | no | `"GroupMailRespond"` | リボン上でTypical Replyを表示するデフォルトの位置。ビルトインのidMsoを指定する。 | `"GroupMailRespond"`、`""` |
| TabReadInsertAfterMso | 文字列 | no | `"GroupRespond"` | メールのリボン上でTypical Replyを表示するデフォルトの位置。ビルトインのidMsoを指定する。 | `"GroupRespond"`、`""` |
| ContextMenuInsertAfterMso | 文字列 | no | `"Forward"` | メールのコンテキストメニュー上でTypical Replyを表示するデフォルトの位置。ビルトインのidMsoを指定する。 | `"Forward"`、`""` |
| ButtonConfigList | ButtonConfigのリスト | yes | - | 定型返信ボタン設定のリスト | - |
ButtonConfig: 定型返信ボタン設定。返信内容や返信先等の設定を行う。
| 設定名 | 型 | 必須 | 省略時のデフォルト | 概要 | 例 |
| -------------- | -------------- | ---- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| Id | 文字列 | yes | - | ボタンのID。ButtonConfigList内で重複不可。 | `"LikeId"` |
| Label | 文字列 | yes | - | ボタンに表示されるラベル | `"いいね!"` |
| SubjectPrefix | 文字列 | no | null | 件名の先頭に挿入する文言 | `"[[いいね]]"` |
| Subject | 文字列 | no | 返信のデフォルト件名 | 件名 | `"報告"` |
| Body | 文字列 | no | null | 本文 | `"いいね"` |
| Recipients | 文字列のリスト | no | 送信先なし | 送信先。
`["blank"]`: 送信先なし
`["all"]`: 全員に返信
`["sender"]`: 送信者にだけ返信
その他の文字列リスト: 指定のアドレスに返信 | `["test@test.co.jp", "test2@test.co.jp"]` |
| QuoteType | boolean | no | false | 元の文言を引用するかどうか。
`true`: 引用する
`false`: 引用しない | `true` |
| AllowedDomains | 文字列のリスト | no | 全て許可 | 送信を許可するドメインリスト。このドメイン以外が含まれている場合、返信用メールの作成、送信は行わない。
`["*"]`: 全て許可する
その他の文字列リスト: 指定したドメインのみ送信を許可する | `["test.co.jp", "test2.co.jp"]` |
| ForwardType | 文字列 | no | 添付しない | 元のメールを添付するかどうか。
`attachment`: 添付する | `attachment` |
| Size | 文字列 | no | "normal" | グループに表示するボタンのサイズ
`normal`: 通常ボタン
`large`: 大きいボタン | `attachment` |
## 新しい設定追加の例
「最高!」というボタンを追加する方法を考えます。
設定ファイル(`%APPDATA%\TypicalReply\TypicalReplyConfig.json`)を編集します。
現在の設定が以下のようになっているとします。
```
{
"ConfigList": [
{
"Culture": "ja-JP",
"GalleryLabel": "定型返信",
"ButtonConfigList": [
{
"Id": "Like",
"Label": "いいね!",
"SubjectPrefix": "[[いいね!]]:",
"Body": "いいね!",
"Recipients": ["all"],
"QuoteType": true,
"AllowedDomains": [
"*"
]
}
]
}
]
}
```
ButtonConfigListにButtonConfigを追加します。
`Id`は`Awesome`とし、`Label`は`最高!`とします。
```
{
"Id": "Awesome",
"Label": "最高!"
}
```
元のメッセージに対して返信するので、元の件名は残して、件名に対してリアクションのメッセージを追加します。
そのために、`Subject`は空にして元の件名が残るようにし、`SubjectPrefix`で件名の先頭にメッセージを追加します。
```
{
"Id": "Awesome",
"Label": "最高!",
"SubjectPrefix": "[[最高!]]:"
}
```
同様に、元のメッセージに対して返信するので、元の本文は残して(引用状態にして)、本文にメッセージを追加します。
そのために、`Body`にメッセージを指定し、`QuoteType`に`true`を指定します。
```
{
"Id": "Awesome",
"Label": "最高!",
"SubjectPrefix": "[[最高!]]:",
"Body": "最高!",
"QuoteType": true
}
```
このボタンでは、送信者にのみ返信することとします。
そのために、`Recipients`に`["sender"]`を指定します。
```
{
"Id": "Awesome",
"Label": "最高!",
"SubjectPrefix": "[[最高!]]:",
"Body": "最高!",
"QuoteType": true,
"Recipients": ["sender"]
}
```
また、送信先のドメインは自身が所属している`test.co.jp`のみに限定することとします。
そのために、`AllowedDomains`に`["all"]`を指定します。
```
{
"Id": "Awesome",
"Label": "最高!",
"SubjectPrefix": "[[最高!]]:",
"Body": "最高!",
"QuoteType": true,
"Recipients": ["sender"],
"AllowedDomains": ["test.co.jp"]
}
```
元のメッセージの添付は不要とします。
そのため、`ForwardType`は指定しません。
以上で作成した設定をButtonConfigListに追加します。
```
{
"ConfigList": [
{
"Culture": "ja-JP",
"GalleryLabel": "定型返信",
"ButtonConfigList": [
{
"Id": "Like",
"Label": "いいね!",
"SubjectPrefix": "[[いいね!]]:",
"Body": "いいね!",
"Recipients": ["all"],
"QuoteType": true,
"AllowedDomains": [
"*"
]
},
{
"Id": "Awesome",
"Label": "最高!",
"SubjectPrefix": "[[最高!]]:",
"Body": "最高!",
"QuoteType": true,
"Recipients": ["sender"],
"AllowedDomains": ["test.co.jp"]
}
]
}
]
}
```
これで、定型返信のボタンの中に、「最高!」ボタンが追加されます。
