Mail&Excel Data Integrationパターン
~メールとExcelを使ったデータ連携システムを構築する
業務システムのクラウド化が進む現在においても、EメールとMicrosoft Office Excelブック(以下Excelファイル)を使用した業務データのやり取りは業務ワークフローとして多くの現場で採用されています。例えば、営業スタッフが各拠点の売り上げをExcelファイルで集計してEメールに添付して本社に送り、本社で全拠点の売り上げを集計する、などのシナリオはさまざまに存在します。
Excelの入力ツールとしての利用のし易さや機能の多さ、そしてEメールの手軽さは、多くの代替ツールが存在する現在においても非常に強力であり、そして今後の未来においても優位性を持ち続けることは想像に難くありません。
今回のDataSpiderデザインパターンは、このEメール&Excelファイル添付のワークフローをそのまま活かして、システムとのデータ連携を可能にする「Mail&Excel Data Integration」を紹介します。これは実際のDataSpider Servistaの導入実績においても数多く採用されているパターンでもあります。
1 課題
CSVやXMLなどのデータ・フォーマットのファイルはシステムによる読み取りは容易だが、人の手で作成するのは難しい。そのため多くの現場で入力が容易で機能が豊富なExcelが入力ツールとして圧倒的なシェアを誇っている。そしてそのExcelファイルの受け渡しにはEメールの添付ファイル方式を利用することが一般的であり、このワークフローを変更することに抵抗を感じる人は多い。
もちろんこの方法では添付されたExcelファイルを受信者がすぐに目視で確認できるというメリットがある。だがそのExcelファイルに記述されたデータを業務システムに連携し、集計や分析等に利用する際にあたっては、通常では人手を介してExcelファイルからシステムへのデータの投入が必要となり、そのためには膨大な工数が必要となってくる。
そこで、メールに添付されたExcelファイルから目的のデータをシステム的に取得することがシステム自動化に当たっては必須となるが、その場合以下のようなさまざまな課題が発生する。
・Eメールの添付メールの形式(multipart)から目的のファイルをどのように取得するか?
- メーラーによってメールの形式にも差分があり、汎用的なメール受信プログラムを作るのは難しい
・Excelファイルの目的のデータをどのように取得するか?
・xls形式(Excel 2003以前)とxlsx/xlsm形式(Excel 2007以降)のファイルが混在している場合どうするか?
また、システム構築後も業務要件の変化によってExcelファイルのフォーマットは変更されていくことが多く、それに対応するためにシステム変更が必要となる。
さらに取得したデータをどのようなシステム・データベースに連携するかも変化していくことが多く、メンテナンスコストが増大する。
2 解決方法
DataSpider Servistaのメールアダプタ / GmailアダプタとExcelアダプタを使用してデータを読み取り、システム連携を行う。
3 説明
メールアダプタ / Gmailアダプタの「メール受信(POP3)処理」、または「メール受信(IMAP4)処理」には、添付されたファイルをDataSpiderファイルシステムの指定したフォルダに保存する機能がある。ここに保存されたExcelファイルをExcelアダプタの「シートから読み取り処理」、または「定義済み範囲から読み取]処理」を使用してデータを読み取り、他システムやデータベースなどにデータを連携する。
・一定間隔でメールをメールアダプタ / Gmailアダプタで受信し、受信メールの添付ファイルのExcelファイルを読み取ってデータ連携を実行する
・メールアダプタ / Gmailアダプタの「メール受信(POP3)処理」・「メール受信(IMAP4)処理」の出力データ「添付ファイルパス」に添付ファイルのファイルパスが出力されるので、それをスクリプト変数に代入してExcelアダプタで使用する
4 メリット
・メールアダプタ / Gmailアダプタの「メール受信(POP3)処理」、または「メール受信(IMAP4)処理」は、さまざまなメーラー(Microsoft Outlook, Mozilla Thunderbird, Lotus Notesなど)で送信されたメールとの連携実績があり、添付ファイルを安定して受信できる
・Excelアダプタの「シートから読み取り処理」、または「定義済み範囲から読み取り処理」では、xls形式・xlsx/xlsm形式の双方に対応している。また、読み取り開始条件・終了条件を指定して読む「シートから読み取り方式」とあらかじめ定義された範囲から読み取る「定義済み範囲からの読み取り方式」の2種類の方法でデータの読み取りが可能
- 「シートから読み取り処理」では、「Excel読み取りウィザード」を使用してウィザードを使用して簡単にデータ取得範囲を指定することができる
・Excelファイルの形式に変更があった場合も、スクリプトの改修を行うことで簡単に対応でき、メンテナンスコストの削減ができる
・データの連携先もDataSpiderの豊富なアダプタを利用してさまざまな選択肢を選ぶことができ、改修も容易
・Excelアダプタの[書き込み]処理を利用して、集計したデータをExcelファイルに書き込みメールで返信する、または他のアドレスに送信することも可能
5 注意点
・メールに添付するExcelファイルは、スクリプトの処理で読み取ることができるようにフォーマットを決めておく必要がある
・メールアダプタ / Gmailアダプタの「メール受信(POP3)処理」・「メール受信(IMAP4)処理」の出力データ「添付ファイルパス」の取り扱いには注意が必要
- 複数の添付ファイルがある場合には「,」カンマ区切りで出力される。本サイト「神尾みかさんのDS自由自在 第4回 「メールの添付ファイルを指定のディレクトリに移動する!」などを参照して、複数の添付ファイルも扱えるように対応する必要がある
- データ連携対象のExcelファイル以外のファイルが添付されていた場合、エラーとなることが無いように処理を作成する(拡張子が「xlsx」以外のファイルは除外するなど)必要がある
・DataSpiderファイルシステムに保存された添付ファイルをそのままにしておくと、保存領域が足りなくなるおそれがある。その場合、スクリプトでファイル操作アダプタを使用し、ファイルの移動、削除や圧縮によるバックアップ等を検討する必要がある
6 関連事項
・DataSpider ServistaのFTPトリガー機能を使用すれば、FTPとExcelファイルの同様のデータ連携システムを使うことができる(参考: DataSpiderデザインパターンβ 第2回 設計パターン 「Executable FTP Server」)。この場合FTPへのアップロードをトリガーとしてスクリプトを起動できるため、リアルタイム性には優れる。ただし、Excelファイルの使用者がFTPクライアントを使用する必要があるなどメールと比べるとユーザーの作業は煩雑になる可能性がある