開発部の土岐です。
今回はスクリプト開発の効率アップに多く役立つ「スクリプト呼び出し」処理を紹介します。
▲本日の主役、スクリプト呼び出し処理アイコン
プログラミングでよくある「この処理メソッド化した方がよくない?」みたいなときに使う、DataSpider開発には必須のアイコンです!
だいたいスクリプト呼び出しを使うときは、
- 同じような処理が複数回行われている箇所を見つける
- 同じ処理を切り出す
- スクリプト呼び出しへのデータ受け渡しを設定する
という順番で処理を行うので、以下にその順で解説していきます。
スクリプト変数を活用してデータ受け渡しを行うところが、スクリプト呼び出し処理の肝なのでぜひ注意して読んでみてください。
また補足事項として、スクリプト呼び出しから値を出力する方法も紹介します。
同じ処理が出てきたら・・・
スクリプトを開発していると、データが違うだけの同じような処理を何度もコピペで作ったりしている場面があったりします。
例えばこんなとき。
異なるCSVファイルから読んだデータをCSVファイルに追加書き込みしています。
ファイルが異なるだけの同じ処理だったりします。
これは処理の共通化のチャンス!
というわけでこんなときはスクリプト呼び出しが使えます。
スクリプトに処理を切り出す
ということで、スクリプト呼び出し処理用に1つスクリプトを作ります。
共通化したい処理を作成します。
これは他スクリプトからコピペできるので、サクッとコピペ!
とりあえず下準備はできたので、ここで呼び出し元のスクリプトでスクリプト呼び出しアイコンを置いてみましょう。
スクリプトが出来たら、ツールパレットのここ。
からドラッグ&ドロップするか、実はプロジェクトエクスプローラーから直接ドラッグ&ドロップもできます。
スクリプト呼び出しのダイアログで、[スクリプト]に処理を切り出したスクリプト名を指定すれば、呼び出すことができます!
スクリプト変数を活用してデータを渡す
さて処理を切り出したら、呼び出したスクリプトにデータを渡して処理を行わせる必要があります。
そんなときには「スクリプト変数」を使います。
呼び出し先のスクリプトで、「ファイル読み取り」と「ファイルに追加書き込み」の対象のファイルパスを呼び出し元から指定したいとします。
スクリプトを右クリックして、スクリプト変数を新規作成します。
スクリプト変数を作成します。
ここでのポイントは、[スクリプト入力変数として使用する]にチェックを入れることです!
スクリプト入力変数として使用すると、スクリプトの外部からこの値を渡すことができます。
特にスクリプト呼び出しでは多用する機能なので覚えておいてください!
このようにスクリプト変数を設定したら、
それぞれのオペレーションで[ファイル]にこの変数を指定します。
スクリプト変数は、「${スクリプト変数名}」という形式で入力すると指定できます・・・が、この形式を覚えるのも面倒なので
右側の▶をクリックすると挿入できることさえ覚えていればOKです!
ってわけでこのようにスクリプト変数を設定したら、今度は呼び出し元のスクリプトから値を渡してやります。
呼び出し先のスクリプトでスクリプト入力変数を設定したので、「入出力」タブにこのようにスクリプト入力変数の値が設定できるようになっています。
この「値」の列に渡したい値を設定したら完成!
この処理を幾つか設定すれば、
スクリプト呼び出しを活用したシンプルなスクリプトが完成です!
あれ、出力は取れるの?
ということで、「スクリプト入力変数」で呼び出し先のスクリプトにデータを渡すことができました。
あれ、じゃあ呼び出し先のスクリプトから呼び出し元にデータを渡す(出力する)ことはできるの?
と思う方もいると思います。
もちろんできます!
だいたい予想は付くと思いますが、
その場合はスクリプトを作成するときに[スクリプト出力変数として使用する]にチェックを入れます。
そうすると、先ほど見たスクリプト入出力タブで
出力変数として設定されていることが分かります。
この変数に呼び出し先のスクリプトで設定した値は、スクリプト呼び出しの「コンポーネント変数」として呼び出し元で使用することができます。
コンポーネント変数は、例の▶のところに出てきます。
またMapperでは以下のようにコンポーネント変数が表示されるので、マッピングをして値を使用することができます。
このようにスクリプト呼び出し先の値を出力して活用することができます。
以上でスクリプト呼び出しの説明は終わりです。
スクリプト入出力変数を活用することによって、スクリプト呼び出しはさまざまに活用することができます。
シンプルで分かりやすいスクリプトを作るためにも活用していきたいですね。
で! 実は本文中には割愛したのですが、「XML型変数を使ったデータの受け渡し」という重要な機能をスクリプト呼び出しは持っています。
この使い方については別の記事で解説します!