プリントコマンドスクリプトのトリガーファイルから情報を抽出し、プリントドキュメントアクションの設定に再利用する方法
質問
Print Command Scriptの指示が含まれたトリガーファイルから情報を抜き出し、それを使ってPrint Documentアクションで可変データや印刷オプションを設定するにはどうすればいいですか?
回答
以下の方法を使って、コマンドスクリプトのパラメータが含まれたトリガーファイルから名前付きデータソースを抽出し、通常のCSVファイルのようにデータを利用できます。どちらの方法でも、Print Documentコマンドを含むファイルインテグレーションを作成する必要があります。
正規表現を使う方法
2つの方法のうち、より簡単なのが正規表現(regex)を使う方法です。Print Documentアクションまでの全体の流れは以下の通りです:
最初の3つのアクションは「検索して削除」アクションです。以下は例で使われているサンプルデータです:
%BTW% /AF="C:\Users\framos\Desktop\TempFiles\PALLET-0.btw" /PRN="PFM_ADV_COP" /R=3 /P /D="%Trigger File Name%" /DD
%END%
AF1;AF2;AF3;AF4;AF5;A5;AF6;AF7;AF8;AF9;AF10;AF11;AF12;AF13;AF14;AF15;AF16;A16;AF17;AF18;AF19;AF20;A20;AF21;AF22;AF23;AF24;AF25;AF26;AF27;AF28;AF29;AF30;AF31;AF32;AF33;AF34;AF35;AF36;AF37;AF38;AF39;AF40;AF41;AF42;AF43;AF44;AF45;XF1;XF2;P1;END
;BLE-0230ABU;40000,00;;100000025;S;VERSEUR 29MM;BH0290ABU190I01;BLEDINA;69400;VILLEFRANCHE SUR SAONE;;111,38;BH0290ABU190I01;40000,00;PCE;170215;P;;1;100,00;OF000006;K;OF000006;;R;;PCE;Commission client;;40000,00;PCE;40000,00;PCE;UNITED CAPS MESSIA;39570 MESSIA SUR SORNE FRANCE;P01;;;;;CUS002474;;0;036610641000000258;0;63661064000055;02;4;2,00;TOTO est parti chez le boulanger pour acheter un croissant;END
1. トリガーファイルから取得したイベントデータからドキュメント名を抽出します
この正規表現は、/AF="より前とそれを含む部分、そして" /PRN以降とそれを含む部分をすべて削除します。以下の正規表現をコピーしてご利用ください:
(%BTW[\s\S]*\/AF=")|(" \/PRN[\s\S]*)
2. イベントデータからプリンタ名を抽出します
前のアクションと同様に、/PRNパラメータの引用符で囲まれた部分以外をすべて削除します。以下の正規表現をコピーしてご利用ください:
(%BTW[\s\S]*\/PRN=")|(" \/R[\s\S]*)
3. コマンドスクリプト部分を削除し、Print Documentアクションでトリガーファイルのデータを通常のCSVファイルのように使えるようにします:
この正規表現は最初の2行だけを削除し、残りのデータはそのまま残します。以下の正規表現をコピーしてご利用ください:
(.BTW[\s\S]*END.)\u000D\u000A
独自の正規表現を作成する際の注意点
BarTenderでは、インテグレーション内で%を変数として使用します。コマンドスクリプトでは%BTW%や%END%のように2つの%が使われています。正規表現に%が2つ含まれていると、BarTenderはその間の文字列を変数として解釈し、「検索条件に未解決の名前が含まれているため、変換を適用できません」という警告が表示される場合があります。
可能であれば、%を2つ使うのは避けてください。どうしても必要な場合(上記のコマンドスクリプト削除用の正規表現など)、%の代わりにドットのワイルドカード文字を使うか、アクションの「変数」チェックボックスをオフにしてください:
抽出した情報を使ってドキュメントを印刷する
最後のステップは、これらの情報をPrint Documentアクションに入力することです。作成した変数を使って、Print Documentアクションの「ドキュメント」や「プリンタ」欄にそのまま追加できます:
コマンドスクリプトから抽出した他の情報(部数やカスタム変数など)もここで利用できます。たとえば、%NamedVariable1%にコマンドスクリプトから抽出したデータが入っている場合、以下のように名前付きデータソースを追加できます:
さらに詳しく
正規表現の扱いが難しい場合や使いたくない場合は、別の方法で情報を抽出することもできます。
検索して削除を使う方法
この方法は2つの方法のうち、やや手間がかかります。正規表現を使いたくない、または編集したくない場合におすすめです。コマンドスクリプトから抜き出したい項目ごとに、以下の一連の検索アクションが必要です:
1. 最初のステップでは/AF="を検索し、それより前の部分をすべて削除します:
2. 次に、1つ目のステップで検索に使った/AF="自体を削除します:
3. 次に、実際のファイル名の後ろをすべて削除します。ファイル名が何になるかわからない場合は、最初に見つかった引用符以降をすべて削除できます:
4. 前と同じように、引用符自体も削除します。
これでBTWファイルのパスと名前が取得できました。プリンタや他の情報もコマンドスクリプトから抜き出したい場合は、同じようにこの4つのステップを繰り返してください。