共通マクロ書式

読み取りデータ書式 読み取り系の設定で読み取ったデータを参照するマクロの書式です。
シンボル情報取得書式 QRコード読み取りで取得したシンボル(QRコード)に関する書式です。
配信先取得書式 文書コピー、又は文書移動で、実際にコピー、又は移動を行った後のファイルに関する情報を取得するマクロの書式です。
ユーザデータ書式 マクロで使用可能なデータ領域(変数)に関する書式です。
グローバルデータ書式 グローバルデータ設定で設定された文字列に関する書式です。
プラグインデータ書式 プラグインデータ設定で設定された文字列に関する書式です。
日付書式 日付に関する書式です。
ファイル名書式 ファイル名に関する書式です。
文字列書式 文字列操作に関する書式です。
数学書式 計算、丸め処理等に関する書式です。
制御書式 条件分岐、繰り返し処理等、実行制御に関する書式です。
実行書式 ファイル操作、ダイアログ表示等の実行に関する書式です。
データベース書式 データベース操作の実行に関する書式です。
DocuWorksAPI書式 DocuWorksAPIに関する書式です。
ブラウザフォーム書式 ブラウザフォームに関する書式です。ブラウザフォームを使用するは、ブラウザフォームエクステンションをインストールする必要があります。また、Microsoft .NET Framework 2.0が必要です。

マクロの書式

マクロは、以下の書式で定義されマクロ名と引数を記述します。マクロ名と引数の内容によって実行時に様々な処理を行います。

{%マクロ名(引数1,引数2)}

マクロは戻り値があり、実行時に処理されると戻り値の内容に置換されます。(戻り値が空文字の場合もあります。)
例えば、以下のマクロは現在の日付に置換されます。

{%DATE(yyyy/mm/dd)}

↓置換される

2010/06/20

マクロのネスト(入れ子)も可能です。以下は、今日の日付をメッセージボックスに表示します。

{%MSGBOX({%DATE(yyyy/mm/dd)})}

マクロは、フォルダやファイル名の入力欄にも記述できます。以下の様に記述すれば、日付のフォルダを簡単に作成できます。
(処理設定のファイル移動やコピーでは、フォルダに指定されたパスが存在しなければ、自動でフォルダを作成します。)

C:\Doc\{%DATE(yyyy)}\{%DATE(mm)}\{%DATE(dd)}

↓置換される

C:\Doc\2010\06\20
文字列について

一般的なプログラム言語では、文字列を""で囲う仕様があります。eDocArrangementのマクロでは、文字列を""で囲わないでください。

{%MSGBOX(こんにちは)}  -> 「こんにちは」が表示される

マクロの引数の部分の文字がすべて引数として渡されますので、前後にスペースなどを含めるとスペースも引数に渡ってしまいます。

{%MSGBOX(  こんにちは  )}  -> 「  こんにちは  」が表示される

マクロ書式内で使用する文字について

マクロ書式では、マクロの引数の区切りとして「,」(カンマ)を使用しています。カンマそのものを引数に指定する場合には、カンマの前に「\」(円)を付けてください。
また、「\」(円)そのものを引数に指定する場合には、「\」(円)を「\」(円)の前に付けてください。

例 QRコードに「 山田,19,男 」というデータが格納されていた場合に、カンマで分割する場合

{%SPLIT({%P_DATA(QRコード読み取り1.1)}, \, ,分割結果)}

例 処理中の対象ファイルのフォルダパスを\で分割する場合

{%SPLIT({%FOLDER_PATH}, \\ ,Folder)}

マクロの処理方式と分割について

マクロ書式は、当初、ファイル名やフォルダ名の一部を、日付に置き換えるなど、文字列の置換を行う目的で作られました。

その後、ファイルの削除や、DocuWorksAPIをマクロから呼び出すような実行を伴う処理にも対応できるように進化しました。

また、様々な処理を実行するには、順次処理のみではなく、選択や繰り返し処理も必要になってきます。そこで、IFマクロや、LOOPマクロを用意することで、擬似的な実行制御も出来るようになりました。

しかし、置換処理をベースとしていますので、一般的なプログラム言語やスクリプト言語のように完全な実行制御は行っていません。

まず、マクロ全体を見て、IFとLOOPのマクロを処理します。結果、展開された文字を再度、マクロ書式として処理します。

このような処理方法のため、IFやLOOPマクロが使用されているマクロでは注意が必要です。

例えば、以下の様なマクロの場合

{%DW_GET_PAGE_INFORMATION({%PAGE_NO})}
{%MSGBOX({%IF({%GET_USER_DATA(PageInformation,PageWidth)}>22000,大きい,小さい)})}

「DW_GET_PAGE_INFORMATION」マクロでページの幅を取得して、その直後のIFマクロでページの横幅が220mmより大きいか判断しています。
しかし、このマクロではIFマクロが一番最初に処理(展開)されるため、
「DW_GET_PAGE_INFORMATION」マクロが処理される前に、「GET_USER_DATA」マクロで、ページの幅を参照することになります。

ページ情報の取得前なので、ページの幅はゼロに設定されているため、正しく判定することができません。

そこで、「#--」記号を使って、展開処理の単位を分割できるようにしました。

{%DW_GET_PAGE_INFORMATION({%PAGE_NO})}
#--
{%MSGBOX({%IF({%GET_USER_DATA(PageInformation,PageWidth)}>22000,大きい,小さい)})}

上記の例では、「#--」でマクロが分割されるので、まず、

{%DW_GET_PAGE_INFORMATION({%PAGE_NO})}

が処理され、次に

{%MSGBOX({%IF({%GET_USER_DATA(PageInformation,PageWidth)}>22000,大きい,小さい)})}

が処理されます。

このように「#--」を使うことで、個別にマクロが処理され、ページの幅を判定することが出来るようになります。

但し、「#--」はIFマクロや、LOOPマクロの中に書くと正しくマクロが処理されなくなります。