バッチ設定を追加すると、ファイルの繰り返しだけがあるバッチ設定が追加されます。
これは多くの処理がファイルを対象にした処理であるためです。ファイルの繰り返しが不要な場合は右クリックメニューから削除してください。
ファイルを対象にした処理の場合は、ファイルの繰り返し処理の設定画面にある、繰り返し対象で選択されている内容が対象ファイルになります。最初は「メイン画面のファイルリスト」のみで他の選択項目はありません。ファイル検索処理を追加すると、その配下のファイルの繰り返し処理では、ファイル検索で検索したファイルリスト(ファイル検索処理名)が選べるようになります。
「メイン画面のファイルリスト」を繰り返し対象とした場合、バッチ設定をどこから実行するかで以下のように対象となるファイルが変化します。
実行を行うアプリケーション | 繰り返し対象 |
---|---|
eDocArrangement2のメイン画面 | メイン画面で検索したファイルリスト。 |
DocuWorksDeskのeDocArrangement2プラグイン | DocuWorksDeskで選択したファイルリスト。 |
eDocArrangement2スケジューラー | スケジュール設定の監視フォルダで指定したフォルダのファイルリスト。 |
eDocArrangement Command | コマンドオプションで指定したファイルリスト、又はコマンドオプションで検索した結果のファイルリスト。 |
バッチ設定を呼び出す前にファイルリストが作成され、ファイルリストをバッチ設定に渡して処理が動くようになっています。
ファイルの繰り返しから始まるバッチ設定は、上記のファイルリストが0件の場合は何も処理が行われません。
バッチ設定のツリーは各処理がプログラム構造と同じになるように追加していきます。
上記の設定は、以下の処理を行う場合のイメージです。
XDW文書内のページの繰り返し、アノテーションを検索して見つかったアノテーションの繰り返し処理も行うことができます。
設定画面の文字を入力できる項目のほとんどで、 独自のマクロ言語 を使用できます。入力欄で右クリックメニューを表示した際に、マクロ書式のメニューが表示される場合は、マクロが使用できます。
また、処理の追加でマクロ実行を追加すると、マクロを実行するためのパネルが追加されます。 マクロ実行 では、プログラムに近い処理が記述可能です。ページ毎に繰り返し実行することもできます。
マクロには、以下の様な種類があります。
eDocArrangementが処理中に取得したファイル名や、ファイル内のテキストやアノテーションの情報を保持するデータ参照系のマクロ。
文字列操作や四則演算、ファイルの読み書き、日付取得等を行う実行系のマクロ。
DocuWorksAPIを使ったDocuWorks文書の編集を行うマクロ。
マクロは「{%NAME(引数1,引数2)}」のような書式で記述します。呼び出したいマクロに、パラーメターとしての引数を指定すると、処理を行い、マクロ文が戻り値の文字に置き換わります。
例えば、日付を取得する以下のマクロは、システム日付を取得し、年月日に置換されます。
{%DATE(yyyy/MM/dd)}
置換後
2019/07/01
文書移動において、移動先フォルダにDATEマクロを使った場合は、名前に日付の入ったフォルダが作成されます。
マクロで作り出されたパスのフォルダが存在しない場合は、文書移動の機能で自動作成されます。
C:\test\{%DATE(yyyy)}
フォルダを作成
c:\test\2019
上記のDATEマクロのようにマクロが値を返す場合は、マクロ文が戻り値の文字に置き換わりますが、値を返さないマクロもあります。
ログファイルに文字を出力する「{%WRITE_LOG()}」は、ログに文字が出力されるだけで、戻り値はありません。戻り値を返さないマクロは、マクロ実行の画面で使用します。
{%WRITE_LOG(ファイル名:{%GET(FileName)})}
処理中のファイル名が「Test.xdw」の場合、ログファイルに「ファイル名:Test.xdw」が出力されます。
マクロを使えば、ファイル名やフォルダ名の文字列加工や、XDW文書の文書属性の取得・設定、アノテーション貼り付けなど、様々な処理が可能です。
eDocArrangement2に実装されているマクロとその使い方を調べるには、以下のオンラインマニュアルを参照してください。
上記のページの右上にある検索欄から、調べたいキーワードを入力すると候補が表示されます。例えば、QRコードに関するマクロは「QR」と入力するだけで候補が表示されます。
設定画面のファイルの繰り返し処理から右クリックメニューで「マクロ実行」処理を追加できます。
「マクロ実行」ではマクロ文を自由に記述できます。実行時に1ファイル毎に記述したマクロ文が実行されます。(「マクロをページ単位で処理する」をチェックするとページ毎に処理が実行されます。)
例えば、以下のマクロを記述すると、
{%SET_U(属性,処理年月日,{%DATE(yyyy/MM/dd)})} {%DW_SET_DOCUMENT_ATTRIBUTE(XDW文書オープン1,処理年月日,{%GET_U(属性,処理年月日)})} {%WRITE_LOG(処理年月日:{%GET_U(属性,処理年月日)})}
処理実行時に、以下の処理が実行されます。
グローバルデータ は、設定内で繰り返し使う文字を変数に定義したものです。
例えば、監視フォルダや処理済みフォルダなどのパスを記述する場合に、同じ文字(パス)を何度も設定画面に入力することになります。例えば、以下のような名前でパスを定義します。
TopFolder C:\Home\受発注業務
上記のような定義をグローバルデータで定義しておくと、「{%GET_G(TopFolder)}」とマクロを記述するとことで、「C:\Home\受発注業務」が展開されるようになります。
{%GET_G(TopFolder)}\入力
上記のような記述をすると、「C:\Home\受発注業務\入力」と入力したのと同じになります。
このようにグローバルデータを使うと、後から変更する場合もグローバルデータの定義を変更するだけで、全ての設定値を変更したことと同じになり、効率的です。
設定画面では、 ユーザーデータ 関連のマクロを使って、情報(テキスト)を保持できます。ユーザーデータは一般的なプログラム言語の変数にあたります。名前を(eDocArrangement2ではデータ名、分類キー、キーとしています)指定して、一つの「値」を記憶できます。
例えば、ファイル名「A001_20190925.xdw」のように、先頭に識別番号(A001)が付与されている場合、先頭の4文字をユーザーデータ(データ名:属性,キー:識別番号)に記憶しておくには、マクロ実行処理を追加して、以下の様なマクロを記述します。(LEFTマクロで先頭4文字をとってA001を取得)
{%SET_U(属性,識別番号,{%LEFT({%GET(FileNameWithoutExtension)},4)})}
このマクロを記述したマクロ実行処理のあとでは、以下のようなユーザーデータ取得マクロでいつでも識別番号を参照できるようになります。
{%GET_U(属性,識別番号)}
マクロには文字列操作系のマクロを多数用意しています。例えば、ファイル名が「AB0001.xdw」の様に先頭2桁が分類を表す文字の場合に、分類毎のフォルダを作成するために、ファイル名の先頭2桁を文書移動のフォルダに指定したい場合は、以下の様なマクロを文書移動処理の移動先フォルダに記述します。
D:\業務\保管\{%LEFT({%GET(FileName)},2)}
上記の記述で、「AB0001.xdw」を処理した場合に「D:\業務\保管\AB」フォルダが自動で作成され移動されます。(文書移動の処理では、移動先のフォルダがなければ自動で作成されます。)
上記のマクロは{%GET(FileName)}が「AB0001.xdw」となり、「{%LEFT(AB0001.xdw,2)}」になり、LEFTマクロにより先頭2文字が取得され、結果的に「AB」となります。
ファイル名が「20191002_伊藤_請求書.xdw」のような場合に、文字列分割マクロを使うと、指定した区切り文字(この例の場合はアンダーバー)で分割することが可能です。
以下のマクロでファイル名を_で分割して、分割後の文字をユーザーデータにセットします。
{%SPLIT({%GET(FileNameWithoutExtension)},_,分割文字)} {%SET_U(属性,年月日,{%GET_U(分割文字,1)})} {%SET_U(属性,担当者名,{%GET_U(分割文字,2)})} {%SET_U(属性,帳票名,{%GET_U(分割文字,3)})}
「20191002_伊藤_請求書.xdw」を処理した場合、文書移動の移動先フォルダに以下のように記述すると、
D:\業務\保管\{%GET_U(属性,年月日)}\{%GET_U(属性,帳票名)}\{%GET_U(属性,担当者名)}
以下の様なフォルダが作成されます。
D:\業務\保管\20191002\請求書\伊藤
ファイル名が「20191002_伊藤_請求書.xdw」のような場合に、末尾から_までの文字(請求書)を取得したい場合、前述した文字列分割マクロを使うこともできますが、正規表現文字列抽出マクロを使用して取得することもできます。
以下のマクロで、拡張子を除いたファイル名の末尾から_までの文字を取得して、ユーザーデータにセットします。
{%SET_U(属性,帳票名,{%REGEX_CAPTURE(([^_]+)$,{%GET(FileNameWithoutExtension)})})}
「{%GET(FileNameWithoutExtension)}」は拡張子を除いたファイル名を取得するマクロなので、「20191002_伊藤_請求書」となります。その文字を末尾から_までを取得するので「請求書」がユーザーデータにセットされます。
フォルダ監視で自動処理を行う場合、無人で処理が実行されます。そのため、どのような処理をいつ行ったかを記録するログを残すことが重要となります。
設定毎にログの出力設定が可能です。フォルダ監視を行う場合は、必ずログの設定を行ってください。
eDocArrangement2のエラー処理は、処理パネル毎にエラーを検出し、エラーが発生した場合は処理を終了して、次の処理パネルの処理を実行します。マクロはマクロ実行の中でエラーが発生すると、以降のマクロは処理されずマクロ実行は終了します。
ここでエラーが発生するとXDW文書クローズの処理に飛びます。
ここでエラーが発生するとマクロ実行の処理に飛びます。
{%MACRO1(xxxxx)} ←ここでエラーが発生するとMACRO2は処理されません。
{%MACRO2(xxxxx)}
ページの繰り返し処理内の処理(QRコード読み取り、マクロ実行)でエラーが発生した場合に、ページの繰り返し処理の「エラー時の処理」に記述されているマクロが実行されます。
ファイルの繰り返し処理内の処理(XDW文書オープン、XDW文書クローズ、文書移動)でエラーが発生した場合に、ファイルの繰り返し処理の「エラー時の処理」に記述されているマクロが実行されます。
処理でエラーが発生しても、次の処理は実行されますので、条件分岐の処理でエラーの判定を行って後続の処理を行うかどうか設定できます。また、処理が正常終了したかどうかを調べる処理結果取得マクロ({%GET(ProcResult,処理名)})も用意していますので、マクロでエラー判定することも可能です。
{%MACRO1(xxxxx)}
{%MACRO2(xxxxx)}
すべてのページでQRコードが読み取れた場合(マクロの条件文で判定)
文書保存してクローズ。
上記以外
文書保存せずクローズ。