CData Software Blog

クラウド連携のCData Software の技術ブログです。

ArcESB を使ってメール(添付ファイル)の内容をkintone のアプリに連携する

f:id:irokawah:20220220114859p:plain

こんにちは。CData Software Japanの色川です。

データのやりとりには、さまざまなツールやテクノロジが溢れていますが、メールでのEDI など、メールボックスを通じてデータの授受をするケースはまだまだ多いですよね。

この記事では、メールを自動的に受信して、添付ファイルの内容をkintone のアプリに連携する方法をご紹介します。

ArcESB とは?

ファイル転送(MFT)とSaaSデータ連携をノーコードで実現できるデータ連携ツールです。ファイル・データベース・SaaS API、オンプレミスやクラウドにある様々なデータをノーコードでつなぐ事ができます。

www.arcesb.com

この記事のシナリオ

この記事では、最近ご相談頂いた「パスワード付zip 圧縮されたテキストファイルが添付されたメールを自動的に受信して、テキストファイルの内容をそのままkintone のアプリに連携する」シナリオを作成します。

f:id:irokawah:20220220114910p:plain

メール連携では、メールヘッダや本文、添付ファイルやその中身など、連携したいデータの要素や構造が検討シーンごとに異なりがちです。そんな場面ではArcScript の豊富な機能と柔軟さが頼りになります。

この記事では、テキストファイルの内容全体を1レコードとして使うケースを例にしていますが、添付されるデータがCSV ファイル等でファイルの1行を1レコードとして扱うような場合は、こちらの記事を参考にしてください。

www.cdatablog.jp

必要なもの

この記事のシナリオでは以下の製品を利用します。すべて30日間のトライアルが提供されています。ぜひお手元で試してみてください。

製品のインストール等はこちらの記事を参考にしてください。

www.cdatablog.jp

kintone

この記事では、こちらのように添付付き受信メール1通に対して、1レコードを構成するアプリを作成しました。

f:id:irokawah:20220220114928p:plain

Date、From、Subject などのメールヘッダの情報とともに、添付されているテキストファイルの内容をText 項目に登録します。

Gmail

この記事では、自動受信したいメールボックスとしてGmail を利用します。このようなテキストファイルをパスワード付きzip 圧縮したメールを、InBox に用意しました。

f:id:irokawah:20220220114939p:plain

f:id:irokawah:20220220114948p:plain

ArcESB の基本的な使い方

ArcESB の起動方法や基本的なフローの作り方についてはこちらをご覧ください。

www.arcesb.com

www.arcesb.com

それでは実際にそれぞれの連携フローを作成していきます。

連携フローの概要

このシナリオで作成する連携フローは以下のような流れになっています。

  コネクタ 内容
1 Email Receive メール(添付ファイル)の受信
2 Zip zip ファイルの解凍(展開)
3 Script 解凍されたtext ファイルの読込み(XML 化)
4 XML Map 3.の情報を5.にマッピング
5 CData kintone にUpsert

f:id:irokawah:20220220114959p:plain

Email Receive コネクタの設定

最初にフローの起点となるEmail Receive コネクタを配置し、メール(添付ファイル)受信の設定をします。コアカテゴリから「Email Receive」コネクタを選択し、フローキャンバスへ配置します。

f:id:irokawah:20220220115008p:plain

次にメールサーバ接続の設定をします。この記事ではGmail を利用しますので、GmailIMAP での受信を設定します。

f:id:irokawah:20220220115017p:plain

次にユーザアカウント認証の設定をします。この記事では、基本認証を利用していますが、もちろんOAuth 2.0 での認証にも対応しています。

f:id:irokawah:20220220115031p:plain

次にダウンロードに関する設定をします。この記事では、対象メールの添付ファイル(zip)を取得したいので、ダウンロードの種類を「添付ファイル」に設定します。

f:id:irokawah:20220220115052p:plain

この記事では、添付ファイル以外にDate、From などのメールヘッダも後続のフローに連携したいので、IMAP ヘッダー: プロパティを利用します。このプロパティに指定されたIMAP メールメッセージのヘッダーは、ダウンロードされたフローメッセージ(この記事では添付ファイル)のメタデータとして後続のフローに連携されます。

f:id:irokawah:20220220115119p:plain

これで添付ファイルのダウンロード設定は完了です。

アウトプットタブから「受信」を実行し、添付ファイルを受信できることを確認します。

f:id:irokawah:20220220115130p:plain

Zip コネクタの設定

次にzip ファイルを解凍(展開)するためのZIP コネクタを配置します。コアカテゴリから「ZIP」コネクタを選択し、フローキャンバスへ配置します。

f:id:irokawah:20220220115141p:plain

オペレーションで「解凍」を選択します。アーカイブ形式に「Zip」を選択し、複合化パスワードを設定します。

f:id:irokawah:20220220115151p:plain

この記事ではZip 形式ですが、ZIP コネクタではさまざまなアーカイブ形式をサポートしています。

f:id:irokawah:20220220115202p:plain

Script コネクタの設定

この記事では、レコード形式ではないテキストファイルのデータを1レコードとしてそのまま連携しますので少し工夫が必要です。ArcScript を利用してテキストファイルを読込み、以下のような構造のXML にして、後続のフローでマッピングできるようにします。

<Items>
  <Item>
    <Date>受信したメールヘッダの値(Date)</Date>
    <From>〃(From)</From>
    <Subject>〃(Subject)</Subject>
    <text>添付されたテキストファイルの内容</text>
  </Item>
</Items>

コアカテゴリから「Script」コネクタを選択し、フローキャンバスへ配置します。

f:id:irokawah:20220220115213p:plain

スクリプト欄に以下のスクリプトを追加します。

<!-- インプットファイルの読込み -->
<arc:set attr="file.file" value="[FilePath]" /> 
<arc:set attr="file.encoding" value="UTF-8" /> 
<arc:call op="fileRead" in="file" out="out"> 
  <arc:set attr="work.data" value="[out.file:data]" /> 
</arc:call> 

<!-- 連携されたメタデータ(メールヘッダ)とインプットファイルの内容をXML 化 -->
<arc:set attr="fileOut.data">
  <Items>
    <Item>
      <Date>[Header:Date | xmlencode()]</Date>
      <From>[Header:From | xmlencode()]</From>
      <Subject>[Header:Subject | xmlencode()]</Subject>
      <text>[work.data | xmlencode()]</text>
    </Item>
  </Items>
</arc:set> 

<!-- アウトプットファイルの書込み -->
<arc:check attr="fileOut.data"> 
  <arc:set attr="fileOut.filename" value="test.xml" /> 
  <rsb:set attr="fileOut.encoding" value="UTF-8" /> 
  <arc:push item="fileOut" /> 
  <arc:else> 
    <arc:throw code="NoData" desc="No File Data."/> 
  </arc:else> 
</arc:check>

f:id:irokawah:20220220115222p:plain

ここまでのコネクタをフローでつないで、保存します。

f:id:irokawah:20220220115232p:plain

Email Receive コネクタのアウトプットタブから受信して、Script コネクタのアウトプットタブでXML 化されていることを確認します。

f:id:irokawah:20220220115255p:plain

あとでマッピングで利用するために、Script コネクタのアウトプットタブからダウンロードしておきます。

f:id:irokawah:20220220115305p:plain

スクリプト欄で指定したように、このような内容でxml 出力されていることを確認します。

  <Items>
    <Item>
      <Date>[Date の値]</Date>
      <From>[From の値]</From>
      <Subject>問合せメールサンプル</Subject>
      <text>お世話になっております。株式会社〇〇の□□です。

下記製品の点検をお願いしたいです。手続き方法を教えてください。

製品: ●●●●
購入日: 20xx/xx/xx

回答をお待ちしております。</text>
    </Item>
  </Items>

CData コネクタの設定

次にフローの終点となるCData コネクタを配置し「kintone へのUpsert を設定」します。「コア」カテゴリからの「CData コネクタ」を選択し、フローキャンバスへ配置します。

f:id:irokawah:20220220115320p:plain

コネクタの設定で、kintone への接続を設定してください。

f:id:irokawah:20220220115331p:plain

Action は「Upsert」。対象テーブルに「問合せ」を選択します。

f:id:irokawah:20220220115342p:plain

f:id:irokawah:20220220120226p:plain

XMLMap の設定

このフローの最後に、Script コネクタで出力したXML データを、CData コネクタにマッピングします。

コアカテゴリから「XML Map」コネクタを配置します。

f:id:irokawah:20220220115406p:plain

フローキャンバスの中で、Script コネクタからXML Map に。XML Map からCData コネクタへフローを繋ぎます。フローを接続したら、ワークスペースを保存してください。

f:id:irokawah:20220220115418p:plain

フローをつないだことで、データ構成が設定されているCData コネクタのスキーマは自動で連携されていますので、ソースファイルとしてScript コネクタで出力するXML データを「サンプルファイルとしてアップロード」して指定します。

f:id:irokawah:20220220115432p:plain

f:id:irokawah:20220220115442p:plain

XML Map の設定でそれぞれの項目をマッピングします。

f:id:irokawah:20220220120240p:plain

これで「パスワード付zip 圧縮されたテキストファイルが添付されたメールを自動的に受信して、テキストファイルの内容をそのままkintone のアプリに連携する」フローができあがりました。

このシナリオではシンプルなマッピングのみでデータ項目の変換などは行いませんが、ArcESB でのデータマッピングや変換について興味のある方はこちらを併せてごらんください。

www.arcesb.com

連携フローの実行と確認

作成したフローを実行して確認してみましょう。

起点となるEmail Receive コネクタからフローを実行してみます。アウトプットタブから「受信」を実行します。

f:id:irokawah:20220220115510p:plain

フローの終点となるCData コネクタのインプットタブの結果を確認します。kintone へのインプット(Upsert)が成功されていることを確認します。

f:id:irokawah:20220220115520p:plain

メールヘッダと添付ファイルの内容がkintone に連携されていることが確認できます。

f:id:irokawah:20220220115530p:plain

シナリオの自動実行

ArcESB ではフローを定期実行するスケジューラ機能を持っています。今回のシナリオであれば、フローの起点となるEmail Receive コネクタの「オートメーション」タブで設定することができます。1時間に1度、毎時0分に定期実行する場合は、このように設定します。

f:id:irokawah:20220123232049p:plain

この記事で作成したフロー(テンプレート)の入手

この記事で作成したフローについては、こちら からテンプレートとして使える arcflow がダウンロードできます。

f:id:irokawah:20220307225724p:plain

ダウンロードしたarcflow は ワークスペースをインポート から登録できます。こちらのテンプレートを利用する時は、各コネクタでの接続情報などを、お使いの環境に併せて編集してください。

おわりに

メールでのEDI など、メールボックスを通じてデータの授受をするケースはまだまだ多いと思いますので、自動化できるメールは自動化して、効率よくデータ活用を進めたいですよね。

ArcESB はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで250を超えるアプリケーションへの連携を実現できます。必要な連携を低価格からはじめられる事も大きな特長です。

皆さんのつなぎたいシナリオでぜひ ArcESB を試してみてください。

www.arcesb.com

お試しいただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。

www.cdata.com


この記事では ArcESB™ 2021 - 21.0.8054 を利用しています。