メールなんてもう見たくない～kintone API更新情報をkintoneで共有～

# はじめに
業務でkintoneの活用が進んでくると、お客様とのやりとりもゲストスペースを活用したりして、メールを見る必要性が低くなってきますね。

ところが、技術者にとって大事な情報ってメールで送られてくることがほとんどです。
cybozu developer network のAPI更新情報、Tips公開の情報もまたメール…。
（メンバー登録してフォローするとメールで届くようになります）

大事な情報だからこそ、kintoneで見たい！
技術情報をチームでも共有したい！

ということで、メールで受信した情報をkintoneに自動登録してみました。
# 実現したこと
cybozu developer networkから届く新着情報を、kintoneアプリに登録！
メール本文をそのまま登録ではなく、必要な情報は適切なフィールドに入れます。
![kintone_record.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/ddf59b1a-572d-f00a-05d3-daa61337d7e0.png)

（この画像では同じメールだけになっていますが）
レコードが溜まれば、メンテナンス日ごとに情報を探したりできるようになります！
![list.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/b8c0d8de-9c41-b02b-c74f-d72dfc251f03.png)


## 利用するサービス
- kintone
- [Zapier](https://zapier.com/)
- [Email Parser by Zapier](https://parser.zapier.com/)
- メール（転送設定）

**Zapierは複数ステップのZap(Multi-step Zaps)を作成するため、有料プランが必要です。**
https://zapier.com/app/billing/plans
無料の範囲で使いたい場合、Zapier設定のStep2,3を割愛してください。
ただし、メンテナンス日をkintoneの日付フィールドに入れることができません…。
※無料アカウントでも設定を進めることが出来ますが、自動実行をオンにすることができません。

# 実現方法
## 更新情報メールを眺めてみる
API更新情報のメールは、このような形で送られてきます。
![mail_api.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/db6a7b3b-0775-e365-0a1c-719e2f1c29cd.png)

- 「メール受信日＝APIリリース日」ではない（定期メンテの日より先に送られてくる）
- メンテナンス日は件名に書かれている
- 更新情報の掲載された記事URLは、メール末尾の「記事を表示」のリンク先に載る

ちなみにAPI更新情報は、メンバー登録してから[このページ](https://developer.cybozu.io/hc/ja/sections/200129785)にアクセスすると、フォローボタンが表示されます。
![apiUpdateSection.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/e0123368-c7a9-32d9-a2dd-a952db93d45f.png)
APIの障害情報もここに情報が載るので、kintone開発に携わる人はフォローしておくと安心です！
※サイト更新情報とイベント情報も、同じように新着情報をメールで受け取ることが出来ます。

さて、このメールの情報をkintoneに自動で取り込めるよう設定していきましょう！
## 処理の流れ
1. メールをEmail Parser by Zapier で発行したメールアドレスに転送する
2. Email Parserでメールの内容を分解
3. Zapier で2のメール受信をトリガーに、kintoneへレコード登録する

※ 1のメール転送は、メールサービス側やメーラーの転送設定を使います。

# 設定
## kintoneアプリの準備
![kintone01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/7a5eab37-a159-784c-7d6f-301067bcac47.png)

アプリに用意するフィールドは以下の通りです。

|フィールドタイプ　|フィールド名　　|フィールドコード    |
|:-----------------|:------------------|:------------------|
| 日付             | メンテナンス日  | メンテナンス日
| 文字列（1行）　　 | タイトル | タイトル
| 文字列（1行）  　 |  URL | URL |
| リッチエディター  |  詳細 | 詳細 |
| 作成日時         |  メール受信日時 | メール受信日時 |
| 文字列（複数行）  |  メール本文 | メール本文 |

一番最後の「メール本文」は、メールの分割に失敗したときに内容を確認するためのフィールドです。
普段は使わないので、グループフィールドの中に入れて閉じておきましょう。
（グループフィールドの名前、フィールドコードはなんでも構いません）

### APIトークン発行
![kintone_token.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/1a39376d-b193-3d19-15cb-19d5bc6086da.png)
APIトークンは「レコード追加」の権限を付けたものを用意してください。
APIトークンをコピーしておき、アプリの設定を保存、公開します。

## Zapier のユーザー登録
[Zapier](https://zapier.com/)のトップページ「Sign Up」ボタンからメンバー登録してください。

## Email Parser by Zapier の設定
Emailで受け取った情報をParseすることができる、Zapierのサービスです。
ここにメールボックスを作成すると、専用のメールアドレスを取得することができます。

Zapier のメンバー登録が終わったら、[Email Parser by Zapier](https://parser.zapier.com/) にZapierのアカウントでログインします。
![Parser01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/bb00951d-edf1-6bba-eeea-d8fab17b4b7e.png)

「Create Mailbox」から新規メールボックスを作成します。
![Parser02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/ac09a963-c1e3-2e14-21ce-1c6b674ec107.png)

「Skip wating」で次へ進みます。
![Parser03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/dc033743-45be-12ab-8b9b-fcad92626aa7.png)

転送用メールアドレスを設定して、「Save Address and Template」ボタンで保存します。
![Parser04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/0a16e1a5-b3a8-37d7-8001-535815a75176.png)
※ テンプレートの設定は後でおこないます。

## メールの転送設定
### 転送設定をする
メーラーやメールサービスの設定で、「ルールに合致したものを指定したメールアドレスに転送」という設定を入れます。
転送先のメールアドレスは、先ほどEmail Parserで設定したものを使います。

Outlookの場合：
![Outlook.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/4cc3f131-894b-525a-be92-b09ad62afcdf.png)

### 設定＆動作確認用に１件メールを転送
Email Parserの設定を行うために、メールを１件転送しておきます。
（転送されるまで待てない！）

## Email Parser by Zapier の設定（テンプレート）
メールの内容を、kintoneのフィールドに登録したい情報で分割するための設定を行います。

Email Parser の [Mailboxes](https://parser.zapier.com/mailboxes/) を開き、先ほど設定したメールアドレスの横の歯車マークをクリックします。
![Parser05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/ac8294b9-f8a4-1428-6d5f-e238209795b4.png)

先ほどテスト転送したメールがこのように表示されています。
![Parser06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/f05fba7c-166b-d890-f3ad-0227d484f790.png)
「Initial Template」内でメールの内容をドラッグすると、その箇所に名前を付けることができます。
![Parser07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/f858ed0e-37a8-58fd-0f70-ae60347317b9.png)

kintoneアプリのフィールド項目として取り出したいところをドラッグして名前を付けていきましょう。

メンテナンス日：mentenancedate
![parse01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/a1003e53-5da6-4c4d-c843-68e83fd9e140.png)

タイトル：title
![parse02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/248fe4b9-1e13-49fe-aae3-93c2b083636d.png)

本文：body
※フッタはいらないと思うので、選択範囲からはずしておいてください。
![parse03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/3ba399e1-05e4-8803-ec30-5df72d04da18.png)

更新記事のURL：articleurl
![parse04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/40feb0a4-ce29-4865-7199-fb0207143968.png)

名前付けが終わったら保存します。
![parse05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/b9a0421c-6ef5-2986-9669-faf7b8ca4838.png)

## Zapierの設定
[Zapier](https://zapier.com/app/dashboard)のDashboardを開き、Make a Zap!から新規Zapを作成していきます。

左上の「Name your zap」をクリックして、Zapの名前をつけておきましょう。
![zapier00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/e7096978-004d-c2f1-a60a-559f954a6461.png)


### Step1
まずはトリガーです！
検索窓で「Email」と入力して、「Email Parser by Zapier」を検索します。
![zapier01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/e7d9679a-7ba2-efe3-61dc-42de59b6d86b.png)

Trigger Eventは「New Email」です。
![zapier02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/0d5be34e-7c08-6b4b-1fb4-1c3285bd7c51.png)

Email Parserのアカウントは、初回は「Add a New Account」から追加します。
![zapier03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/ff8e6189-6d43-f389-18f5-821d9598c8a7.png)

次にMailboxを選択します。
![zapier04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/213b9759-d5e4-4cfa-297a-669e634ce4ee.png)

トリガーの設定は以上です。

### Step2
「＋」マークをクリックして、次のステップを追加しましょう。

Email Parserで、件名から日付（メンテナンス日）を抽出しましたが、この日付は「YYYY/MM/DD」という形式になっています。
このままだとkintoneの日付フィールドに入れられないため、フォーマットを行います。

Built-In Appsから、Formatterを選択します。
![zapier05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/0914b100-80c8-320d-ca25-5c14aeef0f33.png)

Action Eventは「Date/Time」を選んでください。
![zapier06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/c069b1fd-46ea-c578-4f18-31c6a9451914.png)

Valuesは「Parse Output Mentenancedate」を選びます。
※「Parse Output 〇〇」というのが、EmailParserでParseした文字列です。
![zapier07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/0581dfce-0707-2a9d-8ef2-af4ddca46583.png)

To Formatで、kintoneで扱いたい形式を選びます。
ここでは日付のみ（時間不要）なので、YYYY-MM-DDです。
Timezoneは「Asia/Tokyo」を選んでください。
![zapier08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/09577223-7dd3-cf13-f79a-581c1cf09a38.png)
※Email Parserで受け取ったメールの送信日時は、タイムゾーンがUTCになっています。
今回はメール件名からの抽出なので意識する必要はあまりありませんが、メールの受信日を利用するときはフォーマット前後のタイムゾーンに注意する必要があります。

From Formatに「YYYY/MM/DD」が見当たらないので、「Use a Custom Value(advanced)」を選び、「YYYY/MM/DD」を入力します。
![zapier09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/057957ea-d9cc-3ba4-f646-a4fa5e89f3dc.png)
![zapier10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/bb8891e7-5e72-f7cb-677d-db969f235e6f.png)
From Timezoneは「Asia/Tokyo」です。

設定が終わったら、「TEST & REVIEW」で値がどのように変わるか確認することができます。
![zapier11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/c51ae8b2-968f-1cd2-abe4-59b8c103e737.png)
![zapier12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/8b2bdb81-59e9-5464-4fe7-8f2af2f5bca1.png)
YYYY-MM-DD形式になっていれば成功です。

### Step3
Email Parserで選択した本文は、そのまま使うとMarkdown形式で少し読みにくい状態になってしまいます。
![body_image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/aedab8f9-8983-bb2d-c23e-b593e83a7e5c.png)

そこで、Markdown形式からHTML形式にフォーマットを行って、リッチテキストフィールドに入れてみます。
![body_image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/3180c354-f578-e9f8-447a-7e3f5997d2af.png)
少し見やすくなりますね。

ということで、３つめのステップではMarkdownからHTMLへのコンバートを行います！

HELPERSから「Formatter」を選択します。（先ほどの日付フォーマットで使ったのと同じアプリです）
![zapier13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/9ac237e8-3624-ad2c-4ee4-bdcfd4b3c0f4.png)

ここではテキストのフォーマットをしたいので、Action Eventは「Text」を選びます。
![zapier14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/8c27365e-8dc0-d986-dfac-4d69e6610005.png)

Transformは「Convert Markdown to HTML」です。
![zapier15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/235b8e71-398a-f57f-abf8-d4835560df7e.png)

次に、コンバートする対象を選びます。
ステップが増えてくると、扱うデータがステップごとに表示されるようになります。
![zapier16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/99e4fcda-93d2-6bba-bebb-41cbfcd61d1e.png)

取り込んだメールの「Body」と名付けたアウトプットを扱いたいので、「New Email」の中から「Parse Output Body」を選びます。
![zapier17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/0e11f57d-b01e-3b56-eeba-f970f07800cb.png)

「TEST & REVIEW」で変換結果を見てみましょう。
※この時点での「Input」が変換前のデータです。
![zapier18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/23b73c55-8d9b-52fe-f11e-bd5f15c1ebb4.png)

outputに変換結果が表示されます。HTML形式になっていますね。
![zapier19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/e14afe4d-dcb0-ff4b-0cec-15cb97642067.png)

### Step4
いよいよ、kintoneアプリへのレコード登録の設定です！

検索窓から「kintone」を検索して選びます。
![zapier20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/55d8ccf4-8f87-b82f-52e4-3597598c6e1b.png)

Action Eventは「Create Record」です。
![zapier21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/fbc8be1b-02da-0df5-80ba-ad45c2f57763.png)

「Add a New Account」から、アプリへの接続設定を行います。
![zapier22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/3a380b62-b7b3-4b0e-263a-1b3f1b5e117d.png)

表示された画面で必要事項を入力してください。
接続に成功すると、元の画面に戻ります。
この接続設定には、デフォルトでは「Kintone」「Kintone #2」と自動で名前がつけられます。
複数のZapを扱うようになるとこのまま増えてしまうので、区別できる名前をつけておくと便利です。
名前の変更は、「Edit Accounts」から接続設定の一覧を開くと変更できます。
![zapier23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/32af8f7c-79a1-d8c1-1363-5f620bd7c8e1.png)

デフォルトから変更しないままでいると、このように「どのアプリの接続設定か」わからなくなってしまいます…。
接続設定はアプリごとなので、アプリ名（＋環境名）をぜひつけておきましょう！
![zapier24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/6163fdca-b5b4-9b12-d442-7297821d7afd.png)

では、Zapの設定に戻ります。
アプリの接続設定を行うと、次の画面ではレコードのフィールド情報が表示されます。
![zapier25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/18dc07c9-b09d-d6e7-fcc8-3c2a879568fe.png)
ここで表示されるのはフィールドコードです。
日本語でもローマ字でも大丈夫ですが、kintoneアプリを作る時点で判別しやすい名前にしておく必要がありますね。

kintoneの各フィールドに入れたい値を選択していきます。
メール受信日時は、作成日時フィールド（自動で値が入る）ので未選択にしておきます。

メンテナンス日は、Step2の「Date/Time」から、「Parse Output Mentenancedate」を選んでください。
変換前のデータを選んでしまうと、日付形式が不正でkintoneへ書き込むことが出来ないので間違わないよう気を付けてください。
![zapier26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/a28254b9-d96c-913b-08bb-a5f9b448cfc6.png)

「詳細」も、Step3で変換後のBody（Parse Output Body）を選択してください。
![zapier28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/534ac1a2-087b-6a3f-8d0c-426305454dc1.png)

「メール本文」には、切り出す前のメール本文全体を入れておきます。
本文の切り出し（Email Parserでヘッダ／フッタを除くとき）に失敗したとき、メールの全文が確認できるようにするためです。
Step1から、「Email Body Plain」を選んでください。
![zapier27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/bb2060ab-c48a-f1d3-921a-62db776812e7.png)

全体の設定はこのようになります！
![zapier29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/f9179698-ab6a-6101-6e6c-8acd1b8d19f6.png)

どの項目にどんな内容が入るのか確認し、問題なければ「TEST & REVIEW」！
**※TESTボタン押した時点でkintoneにレコード登録されます**
![zapier30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/381ccdac-ffc9-b574-1cfc-3aa21dfd3c45.png)

kintoneアプリにレコードが追加されれば成功です！
![zapier32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/e6772808-08b2-1e3a-ce8a-8f6b433cddb3.png)

自動実行されるようにするには、ZapをONにしてください。
※冒頭に記載したとおり、無料アカウントの場合オンにすることができません。
![zapier31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/9f56473f-30e7-cd1d-f251-7dda4cb4e3ab.png)

# おまけ
## メールの内容分割で、ずれが生じてしまったら
developer networkからのメールは最近テンプレートが変わったようで、新テンプレートでのAPI情報がまだ１件しか受信できていません。
今後メールをたくさん受信していく中で、メール本文から分割して取り出す内容が適切でない、ということが起きる可能性があります。
その際は、Email Parserで「extra template」を設定することで、ずれを調整していくことができます。

Email parserのMailboxesで、ずれが発生してしまったメールの「View Emails」をクリックします。
![parser_ex01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/53e3f61c-901a-7a2a-1c16-f5c308927bb0.png)

受信したメールが表示されます。（ContentのHide/Showで表示を切り替えられます）
![parser_ex02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/49e1bc77-e171-641c-1a44-330ad62dc202.png)

テンプレートを調整したいメールの下部に表示されている「Edit Extra template」をクリックします。
![parser_ex03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/b81f47e5-3fb6-471b-b231-279e9e274063.png)

メインのテンプレート作成時と同様に、切り出したい項目へ名前を付けていくことが出来ます。
![parser_ex04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197668/d22e2b8f-6098-cba6-3ceb-98242571ae0b.png)
ここで登録した内容は、メインのテンプレートの追加情報（Extra Template）として保存することができます。
ずれが気になるときはExtra Templateを追加することで解消できる可能性があります。

# おわりに
様々なサービスから届く技術情報メールたち。
フォルダ分けはしているけれど情報を探しにくいし、チームメンバーとも気軽に共有できたらいいな、と思って設定をしてみました。
Email Parserのところはお手入れしつつ使っていく必要がありそうですが、これで気軽にkintoneで見ることが出来ます。
kintoneや他サービスと気軽に連携できないWebフォームを使っている（登録内容がメールで届く）という場合にも有効活用できそうです。