添付ファイルが無い場合どうする?みかさん:じゃあまず、添付ファイルが無い場合について考えてみましょうか。方法はあると思うけど、東谷君だったらどういうフローを作る?東谷君:そうですね・・・シンプルに考えると、「添付ファイルが存在しない場合は、[移動]処理を実行しない」という条件分岐をすればいいのかな、と思います。添付ファイルが存在しない場合、というのをスクリプトの処理に落とし込むとどうなるかしら。東谷君:その場合、[メール受信(POP3)]処理の出力データの「添付ファイルパス」が空文字になるはずですね。以下のような流れで条件分岐かな。[条件分岐]処理でそのスクリプト変数を使用してフローの分岐を行うみかさん:お、さすが、この辺りのスクリプト作成は慣れてきたわね!東谷君:えへへへ。いうわけで[変数代入]処理で空文字チェック&変数代入、その変数を使う条件分岐を作ってみました。▲変更したスクリプト全体。添付ファイルパスの確認と、条件分岐が追加されている▲添付ファイルパス確認処理。空文字と「添付ファイルパス」」を比較し、結果をスクリプト変数「添付ファイル存在」に代入する。この変数を条件分岐処理で使用して、分岐を行う東谷君:早速動かしてみると・・・・お、できた!みかさん:これで添付ファイルが無い場合はOKだね!添付ファイルが複数ある場合どうする?みかさん:じゃあ、次は添付ファイルが複数ある場合を考えてみましょうか。[メール受信(POP3)]処理で添付ファイルがあるメールを受信した場合の動きについてヘルプから再度確認してみましょう。東谷君:はい!(ヘルプを確認中)[添付ファイルを受信]にチェックが入る場合、添付ファイルを保存する動きになりますね。添付ファイルは、以下のフォルダに保存されます。[メール受信(POP3)]処理の[添付ファイル格納先]を「/tmp」に設定してtest.txtファイルが添付されている場合、メッセージIDが「12345@example.com」だったとすると以下のようになりますね。/tmp/12345@example.com/test.txtそして、その保存した添付ファイルのパスは、出力データの「添付ファイルパス」に出力されます。この添付ファイルが複数ある場合は、以下のようにカンマ(,)区切りで格納されます。/tmp/12345@example.com/test.txt,/tmp/12345@example.com/test2.txtみかさん:そうね。ポイントは添付ファイルはすべて「<格納先>/<メッセージID>/」フォルダに保存されるということ。このフォルダ以下のものすべてを移動させれば、複数の添付ファイルがあった場合にもすべてのファイルを移動することができる、ということになるわね。東谷君:なるほどねー。すると、[移動]処理の[移動元]に指定する値をどうするか、ということがポイントになりそうですね。みかさん:そうね、[移動]処理の[移動元]に、「このディレクトリ以下のすべてのファイル」という指定をすればOKになるよね。東谷君:すいませんでした・・・。ワイルドカードを使って複数のファイルを移動する!みかさん:(スルーして)ワイルドカードを使うと、変数の「添付ファイル保存パス」に以下のような値が入ることになるわね。<格納先>/<メッセージID>/*東谷君:そ、そうですね。この変数の文字列を組み立てて、スクリプト変数「添付ファイル保存パス」に代入すればいいいうことですね。ここでは、変数Mapperで出力データの「添付ファイルパス」から以下のようなロジックで作ることにしましょう。[連結]ロジックを使って結合して、変数に代入する[処理後]/tmp/12345@example.com/*▲変数Mapperでの添付ファイル保存パス作成処理。[移動]処理でワイルドカードを含んだ使うファイルパスを作成している東谷君:あれ、[メール受信(POP3)]処理の出力データの中の「メッセージID」から取ってくれば良さそうなんですが。みかさん:うん、ほとんどの場合はそれでもうまくいくんだけど、そこはちょっと注意が必要なところなのよね。[メール受信(POP3)]処理のヘルプで、[添付ファイル格納先]の「備考」に次のような仕様が書かれているわ。添付ファイル名・メッセージIDに「DataSpiderファイルシステムの禁止文字」またはタブが含まれる場合、「_」(半角アンダースコア)に変換して出力します。ここでは添付ファイル名は「*」(ワイルドカード)で処理するので使用しないから良いんだけど、メッセージIDが上の条件にあてはまる場合、メッセージIDがそのまま保存されたディレクトリ名にはならないのよ。ほとんど場合はそのようなことは起きないんだけど、より安全に処理するには本当に保存されたファイルパスを出力する「添付ファイルパス」を使用した方が良いわね。これであらゆる場合に対応できるスクリプトが作れるわけですねー。みかさん:というわけで、できたスクリプトがこちら。いやーまだまだ勉強不足だなぁ。自信を持って、より良いスクリプトが作れるように努力していきましょう。いうわけで大きな成長を見せながらも、DataSpiderの達人に向けての道はまだまだ遠い東谷君。次回以降も、さらに新しいことにチャレンジしていきます。今回作成したスクリプトは、以下スキルアップセンターのページよりダウンロードが可能です。コミュニティを開くコメントログインしてコメントを残してください。