こんにちは。CData Software Japanの色川です。
データのやりとりには、さまざまなツールやテクノロジが溢れていますが、メールでのEDI など、メールボックスを通じてデータの授受をするケースはまだまだ多いですよね。
この記事では、メールを自動的に受信して、添付ファイルの内容をkintone のアプリに連携する方法をご紹介します。
CData Arc とは?
ファイル転送(MFT)とSaaSデータ連携をノーコードで実現できるデータ連携ツールです。ファイル・データベース・SaaS API、オンプレミスやクラウドにある様々なデータをノーコードでつなぐ事ができます。
arc.cdata.com
この記事のシナリオ
この記事では、最近ご相談頂いた「パスワード付zip 圧縮されたテキストファイルが添付されたメールを自動的に受信して、テキストファイルの内容をそのままkintone のアプリに連携する」シナリオを作成します。
メール連携では、メールヘッダや本文、添付ファイルやその中身など、連携したいデータの要素や構造が検討シーンごとに異なりがちです。そんな場面ではArcScript の豊富な機能と柔軟さが頼りになります。
この記事では、テキストファイルの内容全体を1レコードとして使うケースを例にしていますが、添付されるデータがCSV ファイル等でファイルの1行を1レコードとして扱うような場合は、こちらの記事を参考にしてください。
www.cdatablog.jp
必要なもの
この記事のシナリオでは以下の製品を利用します。すべて30日間のトライアルが提供されています。ぜひお手元で試してみてください。
製品のインストール等はこちらの記事を参考にしてください。
www.cdatablog.jp
kintone
この記事では、こちらのように添付付き受信メール1通に対して、1レコードを構成するアプリを作成しました。
Date、From、Subject などのメールヘッダの情報とともに、添付されているテキストファイルの内容をText 項目に登録します。
Gmail
この記事では、自動受信したいメールボックスとしてGmail を利用します。このようなテキストファイルをパスワード付きzip 圧縮したメールを、InBox に用意しました。
CData Arc の基本的な使い方
CData Arc の起動方法や基本的なフローの作り方についてはこちらをご覧ください。
arc.cdata.com
arc.cdata.com
それでは実際にそれぞれの連携フローを作成していきます。
連携フローの概要
このシナリオで作成する連携フローは以下のような流れになっています。
|
コネクタ |
内容 |
1 |
Email Receive |
メール(添付ファイル)の受信 |
2 |
Zip |
zip ファイルの解凍(展開) |
3 |
Script |
解凍されたtext ファイルの読込み(XML 化) |
4 |
XML Map |
3.の情報を5.にマッピング |
5 |
CData |
kintone にUpsert |
Email Receive コネクタの設定
最初にフローの起点となるEmail Receive コネクタを配置し、メール(添付ファイル)受信の設定をします。コアカテゴリから「Email Receive」コネクタを選択し、フローキャンバスへ配置します。
次にメールサーバ接続の設定をします。この記事ではGmail を利用しますので、Gmail へIMAP での受信を設定します。
次にユーザアカウント認証の設定をします。この記事では、基本認証を利用していますが、もちろんOAuth 2.0 での認証にも対応しています。
次にダウンロードに関する設定をします。この記事では、対象メールの添付ファイル(zip)を取得したいので、ダウンロードの種類を「添付ファイル」に設定します。
この記事では、添付ファイル以外にDate、From などのメールヘッダも後続のフローに連携したいので、IMAP ヘッダー:
プロパティを利用します。このプロパティに指定されたIMAP メールメッセージのヘッダーは、ダウンロードされたフローメッセージ(この記事では添付ファイル)のメタデータとして後続のフローに連携されます。
これで添付ファイルのダウンロード設定は完了です。
アウトプットタブから「受信」を実行し、添付ファイルを受信できることを確認します。
Zip コネクタの設定
次にzip ファイルを解凍(展開)するためのZIP コネクタを配置します。コアカテゴリから「ZIP」コネクタを選択し、フローキャンバスへ配置します。
オペレーションで「解凍」を選択します。アーカイブ形式に「Zip」を選択し、複合化パスワードを設定します。
この記事ではZip 形式ですが、ZIP コネクタではさまざまなアーカイブ形式をサポートしています。
Script コネクタの設定
この記事では、レコード形式ではないテキストファイルのデータを1レコードとしてそのまま連携しますので少し工夫が必要です。ArcScript を利用してテキストファイルを読込み、以下のような構造のXML にして、後続のフローでマッピングできるようにします。
受信したメールヘッダの値(Date)
〃(From)
〃(Subject)
添付されたテキストファイルの内容
コアカテゴリから「Script」コネクタを選択し、フローキャンバスへ配置します。
スクリプト欄に以下のスクリプトを追加します。
<arcset attr="file.file" value="[FilePath]" />
<arcset attr="file.encoding" value="UTF-8" />
<arccall op="fileRead" in="file" out="out">
<arcset attr="work.data" value="[out.file:data]" />
arccall>
<arcset attr="fileOut.data">
[Header:Date | xmlencode()]
[Header:From | xmlencode()]
[Header:Subject | xmlencode()]
[work.data | xmlencode()]
arcset>
<arccheck attr="fileOut.data">
<arcset attr="fileOut.filename" value="test.xml" />
<rsbset attr="fileOut.encoding" value="UTF-8" />
<arcpush item="fileOut" />
<arcelse>
<arcthrow code="NoData" desc="No File Data."/>
arcelse>
arccheck>
ここまでのコネクタをフローでつないで、保存します。
Email Receive コネクタのアウトプットタブから受信して、Script コネクタのアウトプットタブでXML 化されていることを確認します。
あとでマッピングで利用するために、Script コネクタのアウトプットタブからダウンロードしておきます。
スクリプト欄で指定したように、このような内容でxml 出力されていることを確認します。
[Date の値]
[From の値]
問合せメールサンプル
お世話になっております。株式会社〇〇の□□です。
下記製品の点検をお願いしたいです。手続き方法を教えてください。
製品: ●●●●
購入日: 20xx/xx/xx
回答をお待ちしております。
CData コネクタの設定
次にフローの終点となるCData コネクタを配置し「kintone へのUpsert を設定」します。「コア」カテゴリからの「CData コネクタ」を選択し、フローキャンバスへ配置します。
コネクタの設定で、kintone への接続を設定してください。
Action は「Upsert」。対象テーブルに「問合せ」を選択します。
XMLMap の設定
このフローの最後に、Script コネクタで出力したXML データを、CData コネクタにマッピングします。
コアカテゴリから「XML Map」コネクタを配置します。
フローキャンバスの中で、Script コネクタからXML Map に。XML Map からCData コネクタへフローを繋ぎます。フローを接続したら、ワークスペースを保存してください。
フローをつないだことで、データ構成が設定されているCData コネクタのスキーマは自動で連携されていますので、ソースファイルとしてScript コネクタで出力するXML データを「サンプルファイルとしてアップロード」して指定します。
XML Map の設定でそれぞれの項目をマッピングします。
これで「パスワード付zip 圧縮されたテキストファイルが添付されたメールを自動的に受信して、テキストファイルの内容をそのままkintone のアプリに連携する」フローができあがりました。
このシナリオではシンプルなマッピングのみでデータ項目の変換などは行いませんが、CData Arc でのデータマッピングや変換について興味のある方はこちらを併せてごらんください。
arc.cdata.com
連携フローの実行と確認
作成したフローを実行して確認してみましょう。
起点となるEmail Receive コネクタからフローを実行してみます。アウトプットタブから「受信」を実行します。
フローの終点となるCData コネクタのインプットタブの結果を確認します。kintone へのインプット(Upsert)が成功されていることを確認します。
メールヘッダと添付ファイルの内容がkintone に連携されていることが確認できます。
シナリオの自動実行
CData Arc ではフローを定期実行するスケジューラ機能を持っています。今回のシナリオであれば、フローの起点となるEmail Receive コネクタの「オートメーション」タブで設定することができます。1時間に1度、毎時0分に定期実行する場合は、このように設定します。
この記事で作成したフロー(テンプレート)の入手
この記事で作成したフローについては、こちら からテンプレートとして使える arcflow がダウンロードできます。
ダウンロードしたarcflow は ワークスペースをインポート
から登録できます。こちらのテンプレートを利用する時は、各コネクタでの接続情報などを、お使いの環境に併せて編集してください。
おわりに
メールでのEDI など、メールボックスを通じてデータの授受をするケースはまだまだ多いと思いますので、自動化できるメールは自動化して、効率よくデータ活用を進めたいですよね。
CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで250を超えるアプリケーションへの連携を実現できます。必要な連携を低価格からはじめられる事も大きな特長です。
皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。
arc.cdata.com
お試しいただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
www.cdata.com
この記事では CData Arc™ 2021 - 21.0.8054
を利用しています。
関連コンテンツ