ディレクトリに存在するファイル名を判定し、拡張子ごとに処理を分岐したい
キーワード:ファイル拡張子,拡張子判定,エラー処理,例外通知
シナリオ一覧に戻る
概要
ディレクトリに存在するファイル名を判定し、拡張子ごとに処理を分岐したい場合、拡張子を格納したスクリプト変数の値を条件分岐処理で判定します。
ディレクトリに存在するファイルの拡張子を判定し、拡張子ごとに処理を分岐してファイルの読み取り、およびCSVファイルへの書き込みを行います。
想定外のファイルが存在する場合は、例外通知処理を使用して処理を異常終了させます。
処理の流れ
サンプルプロジェクトの処理の流れは以下の通りです。
- 「ファイル名一覧取得処理」でディレクトリ内のファイル名一覧を取得します。
- 「繰り返し(データ件数)処理」でファイルごとに処理を繰り返します。
- 「変数代入処理」で拡張子とファイル名をスクリプト変数に代入します。
- 「条件分岐処理」でスクリプト変数の値を判定します。
- 拡張子が「CSV」の場合、CSVファイルを読み取り、CSVファイルを出力します。
- 拡張子が「XML」の場合、XMLファイルを読み取り、CSVファイルを出力します。
- 拡張子がそれ以外の場合、「例外通知処理」を使用して処理を異常終了させます。
実行結果のイメージについて
- 拡張子が「CSV」および「XML」の場合、サンプルプロジェクトのサンプルデータ「output.csv」を参照してください。
- 拡張子が上記以外の場合、以下のダイアログが表示され、処理が異常終了します。
ポイントとなる機能
名前 |
説明 |
ツールパレット上の場所 |
指定文字より後ロジック |
入力文字列の指定文字よりあとを返します。 |
「文字列」-「関数」-「指定文字より後」 |
小文字に変換ロジック |
入力文字列を小文字に変換して返します。 |
「文字列」-「変換」-「小文字に変換」 |
条件分岐処理 |
条件分岐を行います。 |
「基本」-「フロー」-「条件分岐」 |
処理のポイント
指定文字より後ロジックは[区切り文字列]に指定した文字よりあとの文字列を返します。
[区切り文字列]にピリオドを指定することで、ディレクトリに存在するファイル名から拡張子を取得することが可能です。
また、拡張子に大文字が含まれる場合に、小文字に変換ロジックで拡張子を小文字に統一することで、大文字・小文字を区別することなく、条件分岐内で拡張子の判定が可能です。
サンプルプロジェクトの使用方法
上記処理を実装したサンプルプロジェクトを用意しています。サンプルプロジェクトを使用する場合の手順は、以下の通りです。
サンプルプロジェクトファイル名 |
rl_reference_019.zip |
- サンプルプロジェクトの展開
サンプルプロジェクトファイル「rl_reference_019.zip」を展開します。
- プロジェクトのアップロード
「rl_reference_019.zip」を展開後に作成される「rl_reference_019プロジェクト」ディレクトリがプロジェクトファイルとなります。
DataSpider Studioを起動し、マイプロジェクトの画面から[ファイル]-[ローカルからアップロード]で展開したディレクトリ「rl_reference_019プロジェクト」をアップロードしてください。
- サンプルデータの準備
「rl_reference_019.zip」を展開後に作成される「samples」ディレクトリがサンプルデータとなります。
$DATASPIDER_HOME/server/samplesディレクトリに上書きしてください。
スクリプトの作成手順
プロセスフローおよびデータフローは、「サンプルプロジェクトの説明」のスクリプト画像を参照して適宜設定してください。
- ファイル名・拡張子として使用するスクリプト変数を作成します。
- スクリプト変数のプロパティは、以下のように設定します。
スクリプト変数のプロパティ
変数名 |
変数型 |
初期値 |
拡張子 |
文字列型 |
|
ファイル名 |
文字列型 |
|
- デザイナのツールパレット「ファイル」-「ファイル操作」-「ファイル名一覧取得」から、ファイル名一覧取得処理をスクリプトキャンバスに配置します。
- ファイル名一覧取得処理の設定は、以下のように行います。
[必須設定]タブ
- デザイナのツールパレット「基本」-「フロー」-「繰り返し(データ件数)」から、繰り返し(データ件数)処理をスクリプトキャンバスに配置します。
- 繰り返し(データ件数)処理の設定は、以下のように行います。
[必須設定]タブ
- デザイナのツールパレット「基本」-「処理」-「変数代入」から、変数代入処理をスクリプトキャンバスに配置します。
- 変数代入処理のMapperエディタを開き、ファイル名からピリオドより後の文字列を切り出した値をスクリプト変数に代入する処理を作成します。
- マッピングキャンバスは、以下のように設定します。
マッピングキャンバス
番号 |
ロジック名 |
説明 |
ツールパレット上の場所 |
(1) |
指定文字より後 |
入力文字列の指定文字よりあとを返します。
[区切り文字列]にはピリオド「.」を指定します。 |
「文字列」-「関数」-「指定文字より後」 |
(2) |
小文字に変換 |
入力文字列を小文字に変換して返します。 |
「文字列」-「変換」-「小文字に変換」 |
処理のポイント
- [区切り文字列]にピリオドを指定することで、ファイル名に含まれる拡張子を取得できます。
- 拡張子に大文字が含まれるファイルの場合も、小文字に変換ロジックで小文字に統一した拡張子を取得できます。
|
- デザイナのツールパレット「基本」-「フロー」-「条件分岐」から、条件分岐処理をスクリプトキャンバスに配置します。
- 条件の設定は、以下のように行います。
[必須設定]タブ
- [条件分岐開始]の右クリックメニューから[条件の追加]を選択し、条件を追加します。
- 条件の設定は、以下のように行います。
[必須設定]タブ
- [条件分岐開始]の右クリックメニューから[条件の追加]を選択し、条件を追加します。
- 条件の設定は、以下のように行います。
[必須設定]タブ
処理のポイント
- 条件は判定順序で評価されます。
- 条件アイコン上の丸数字が判定順序です。
|
- デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル読み取り」から、CSVファイル読み取り処理をスクリプトキャンバスに配置します。
- CSVファイル読み取り処理の設定は、以下のように行います。
[必須設定]タブ
- デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル書き込み」から、CSVファイル書き込み処理をスクリプトキャンバスに配置します。
- CSVファイル書き込み処理の設定は、以下のように行います。
[必須設定]タブ
[書き込み設定]タブ
- デザイナのツールパレット「ファイル」-「XML」-「XMLファイル読み取り」から、XMLファイル読み取り処理をスクリプトキャンバスに配置します。
- XMLファイル読み取り処理の設定は、以下のように行います。
[必須設定]タブ
- デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル書き込み」から、CSVファイル書き込み処理をスクリプトキャンバスに配置します。
- CSVファイル書き込み処理の設定は、CSVファイル書き込み処理「csv_write」と同様に行います。
- デザイナのツールパレット「基本」-「処理」-「例外通知」から、例外通知処理をスクリプトキャンバスに配置します。
- 例外通知処理の設定は、以下のように行います。
[必須設定]タブ
- スクリプトを実行し、以下の結果になれば成功です。
- 拡張子が「CSV」および「XML」のファイル内容はCSVファイルに出力されます。
- 拡張子が上記以外の場合、例外が通知され、処理が異常終了します。