Slack から メールを送れるようにしてみた ～その１～

#シリーズ目次

- Slack から メールを送れるようにしてみた ～その１～




# 概要
この分野では門外漢の私が、
「遠方の方とコミニケーションを図るならSlack がいいですよ」と言われ
２～３ヶ月使ってみました。
...なかなか将来性があるのではないかと思います。

私の業界は email が主流です
email → slack に転送は、良くある事例っぽいですが
slack → email は 実現した例が見つかりませんでした。

なので、**Slack からメールを送れるようにしてみようと思います。**

#環境条件
今回の企画には下記のアカウントが必要です。

- [slack](https://slack.com)
- [zapier](https://zapier.com)
- [gmail](https://www.google.com/intl/ja/gmail/about/)

それぞれ 使い方 や tips などは ここでは省略します。

#仕組み
この記事は、zapier の使い方といっても過言ではありません。

zapier には 
- slack のメッセージ送信を検知する機能があります。
	(他の iFTTT, Mmicrosoft Flow には無かった)
- メッセージを javascript か python で 編集することができます。

![s1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/812fc2ac-5b9c-89f1-319b-6372bd045cd1.png)

以上より
**1.** slack の特定のチャンネルでメッセージ送信を検知

> メッセージ は **2.** で扱いやすいように *json 形式* で slack に入力する

**2.** メッセージを gmail 送信用に javascript で 編集

**3.** gmail で 送信する


#作成手順
zapier の使い方を説明していきます。
以下の手順は zapier の操作説明です。

##1. slack の特定のチャンネルでメッセージ送信を検知

### 1.1 zapier にログインして `Make A ZAP` をクリック
![z1.png](https://qiita-image-store.s3.amazonaws.com/0/142847/3075e30e-2f41-2809-179b-fec88477df00.png)

### 1.2 Choose a Trigger App で 一連の *きっかけ* となる動作を設定します。
今回は `slack` を選択します。
![z2.png](https://qiita-image-store.s3.amazonaws.com/0/142847/93822b54-dd8e-ad1d-f0f6-a14f9b7ab80c.png)

### 1.3 slack の動作の中で どの動作をきっかけとするか選択します。
今回は `New Message Posted to Channel` を選択します。
![z3.png](https://qiita-image-store.s3.amazonaws.com/0/142847/c3d2a87d-2c1e-6e8a-29ba-e32acef37c3d.png)

### 1.4 zapier が slack のアカウントをチェックします。
![z4.png](https://qiita-image-store.s3.amazonaws.com/0/142847/d609b8cd-3505-6873-39ab-c066d791cb81.png)

### 1.5 *きっかけ* となる動作 が slack の どのチャンネル対する入力なのか
`チャンネル` を選択します。(下の例では `#メール` というチャンネルを対象にしています。)
![z5.png](https://qiita-image-store.s3.amazonaws.com/0/142847/705bcd9c-4887-f26e-3865-9f345f381566.png)

### 1.6 zapier が テストを開始します。
![z6.png](https://qiita-image-store.s3.amazonaws.com/0/142847/70608cd0-fca1-1e3c-e70f-a04624dae912.png)

### 1.7 待機状態に入る
![z7.png](https://qiita-image-store.s3.amazonaws.com/0/142847/20559e45-dd8d-5494-ea56-66fa52cb1614.png)

### 1.8 slack で 下記のメッセージを 選択したチャンネル(下の例では `#メール` というチャンネル)で下記のメッセージを入力します。
![18.png](https://qiita-image-store.s3.amazonaws.com/0/142847/c09c6c9a-4c42-bf13-8084-96c17723c6b8.png)


```json:Message
{
   "to": "***@*****.***",
    "cc": null,
    "bcc": null,
    "subject": "ここに件名を入力",
    "body": "ここにbodyを入力",
    "attachment": 123
}
```
> - [x] **注意) 値は " ダブルクォーテーションで囲むこと**

### 1.9 zapier で テスト成功のメッセージが出たら `Continue` で次の手順に進みます。
![z9.png](https://qiita-image-store.s3.amazonaws.com/0/142847/df5c15e0-2dc6-aa6c-cb74-228e9749626e.png)


##2. メッセージを gmail 送信用に javascript で 編集

### 2.1 Choose an Action App で javascript で 編集する動作を設定します。
今回は `code` を選択します。
![z10.png](https://qiita-image-store.s3.amazonaws.com/0/142847/c7f605c2-f6c1-fc25-b74b-015bcf6b3912.png)

### 2.2 code を どの言語で記述するか選択します。
今回は `Run javascript` を選択します。
![z11.png](https://qiita-image-store.s3.amazonaws.com/0/142847/0e349977-f095-7f3f-a884-0a0245c810d2.png)

### 2.2 Set up Code by Zapier Run Javascript で下記のコマンドを記述します。
![z12.png](https://qiita-image-store.s3.amazonaws.com/0/142847/b9ed37d1-62d7-e623-1578-58ca7711c6a2.png)

- [x] **Input Data**

What input data should we provide to your code (as strings) via an object set to a variable named inputData?

![z13.png](https://qiita-image-store.s3.amazonaws.com/0/142847/b1f5aaa2-0345-e96c-fd45-edb8637332be.png)



- [x] **Code**

Warning! This is an advanced action! Uses Node 4.3.2. Please read the Code documentation for more information.

```js:Code
var json = JSON.parse(inputData.data);
var to_mail = (json.to.match(/([\w._-]+@[\w._-]+\.[\w._-]+)/gi) || [])[0];

output = [
  {
    to : to_mail,
    cc: json.cc,
    bcc: json.bcc,
    subject: json.subject,
    body: json.body,
    attachment: json.attachment   
  }
];
```

### 2.3 zapier で テスト成功のメッセージが出たら `Continue` で次の手順に進みます。
![z14.png](https://qiita-image-store.s3.amazonaws.com/0/142847/1808715a-3828-ffc3-5501-ff132588b56f.png)


### 2.4 `Add a step` をクリックして gmail で 送信する 動作を追加します。
![z15.png](https://qiita-image-store.s3.amazonaws.com/0/142847/46c7cf18-2185-890a-544d-8e420c94445f.png)


##3. gmail で 送信する

### 3.1 Choose an Action App で メールを送信するする動作を設定します。
今回は `gmail` を選択します。
![20.png](https://qiita-image-store.s3.amazonaws.com/0/142847/e4efd621-a4d6-9c1c-c402-084cddbc8315.png)

### 3.2 gmail の動作の中で どの動作をするか選択します。
今回は `Send Email` を選択します。
![21.png](https://qiita-image-store.s3.amazonaws.com/0/142847/e09efba6-895d-964e-e714-110d6b4a8038.png)

### 3.3 zapier が gmail のアカウントをチェックします。
![22.png](https://qiita-image-store.s3.amazonaws.com/0/142847/29e1b96b-75ef-7e96-5e06-34bdc054e291.png)

### 3.4 gmail の各項目にパラメータを設定します。
右の + ボタンから 手順**2.** の値を選択できるようになっているはずです。
ここで to とか subject とか 選択肢になければ、どこか間違ってます。
![23.png](https://qiita-image-store.s3.amazonaws.com/0/142847/842ff15f-1bd2-24e6-4ca8-640b9f378330.png)

設定例は下図の通りです。
![24.png](https://qiita-image-store.s3.amazonaws.com/0/142847/63bd56dd-d290-f89a-5fba-6732cf2f7915.png)

### 3.4 zapier で テスト成功のメッセージが出たら `Finish` で終了です。
![30.png](https://qiita-image-store.s3.amazonaws.com/0/142847/73f2a060-6205-f10a-3e32-c3e60a8b767f.png)



# メールの送信方法

slack の 指定した チャンネルで 下記のように記述するとメールを送れます。
![18.png](https://qiita-image-store.s3.amazonaws.com/0/142847/c09c6c9a-4c42-bf13-8084-96c17723c6b8.png)

```json:Message
{
   "to": "***@*****.***",
    "cc": null,
    "bcc": null,
    "subject": "ここに件名を入力",
    "body": "ここにbodyを入力",
    "attachment": 123
}
```
> - [x] **注意) 値は " ダブルクォーテーションで囲むこと**

とりあえす、メールは送れることを確認しました

使い勝手は、これからのブラッシュアップにかかっているかな

# 次回
使い始めて 2～3ヶ月なので
これ以外の tips はほとんど知らないです。
　
- 添付ファイル を付けられるようにする
- 複数人に同時に送信する
- 返信時どうする
- 連絡帳と同期して アドレスの入力を省力化する

など改良のアイデア募集中です