|
Tips02
(QRコードの内容をテキストファイルに出力する方法)
QRコードの内容をテキストファイルに出力する例をご紹介いたします。
eDocArrangementのスクリプト処理では、VBS等のスクリプトを記述することが可能です。ユーザ様によって様々なデータ処理を求められる状況において、ベストマッチな処理機能を提供できます。
但し、スクリプトの知識が求められますので、弊社では個別にスクリプトの作成も承ります。(有償)
簡単なものであれば、Webサイトでご紹介するサンプル等を手直しして、ご利用いただけるかと思います。
今回ご紹介する例では、以下の仕様を想定してご説明いたします。
QRコードには、複数の項目を記載するため、名前付きデータ形式(項目名[データ])でテキストを作成します。注文番号、商品名、数量、金額、の4項目が必ず存在することとします。(ここでは、わかりやすく説明するため項目の名前に漢字を使っています。実際の運用では、情報量を減らすため、英文字1文字などに置き換えて運用して頂くのが最適です。)
1ページ1文書のデータを処理することとします。
以下のデータをQRコードにして印刷してあることを前提に、ご説明いたします。
◆文書ファイル(Tips02_xdw.lzh)
また、処理済の文書は、C:\Testフォルダの下に、年フォルダを作成し、その下に月のフォルダを作成し、ファイル名を注文番号にして保管する仕様とします。
|
 |
設定方法
設定は、eDocArrangementのメニュー > ツール > 処理設定から行うことができます。
(ここでは、ポイントとなる部分を説明しますが、詳細はヘルプファイルを参照してください。)
最初は、設定一覧に何も表示されていません。左下の新規ボタンから設定を追加します。次に、右上の処理名から、「QRコード読み取り」を選択して、処理追加ボタンを押します。
|
|
設定一覧に「設定1」が追加され、その下に「QRコード読み取り1」が追加されます。
「QRコード読み取り1」をクリックすると設定内容が表示されます。下図のように設定を行います。
QRコードの位置が特定出来る場合は、「範囲指定する」にチェックを入れて、QRコードの位置をパーセント指定で入力します。
|
 |
次に、右上の処理名から、「スクリプト実行」を選択して、処理追加ボタンを押します。
|
 |
ここで、テキストファイルに出力するスクリプトを記述します。
以下、スクリプトです。
|
 |
'------------------------------------------------------------------------------
'QRコード情報テキスト出力スクリプト
' TechnoStyle,inc.
'
'テキストファイルにQRコードの内容を出力します。
'1文書1ファイルで出力します。名前付きデータをカンマ区切りで以下のように出力しま
'す。
'注文番号,商品名,数量,金額
'
'出力場所は、以下のスクリプトの「Const WriteFolderName = "C:\Test\データ\"」の
'場所に出力されます。変更したい場合はパスを書き換えてください。
'
'ファイルは、「注文番号.txt」で出力します。同名のファイルが存在した場合は、
'「注文番号_0001.txt」のように連番を付加したファイル名とします。
'------------------------------------------------------------------------------
Option Explicit
Const WriteFolderName = "C:\Test\データ\"
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Call Main
'------------------------------------------------------------------------------
'メイン処理
'------------------------------------------------------------------------------
Sub Main
Dim fs
Dim wfile
'QRコードが一つもなかった場合は終了 ---------------------------------------
If "{%SYNBOL_COUNT(QRコード読み取り1)}" = "0" Then
Exit Sub
End If
Set fs = CreateObject("Scripting.FileSystemObject")
'注文番号をファイル名にして保存 -------------------------------------------
Set wfile = Fs.CreateTextFile(GetFileName(WriteFolderName & _
"{%N_DATA(QRコード読み取り1.注文番号)}" & ".txt"), True)
'カンマ区切りでデータを出力 -----------------------------------------------
wfile.WriteLine "{%N_DATA(QRコード読み取り1.注文番号)}" & "," & _
"{%N_DATA(QRコード読み取り1.商品名)}" & "," & _
"{%N_DATA(QRコード読み取り1.数量)}" & "," & _
"{%N_DATA(QRコード読み取り1.金額)}"
wfile.Close
End Sub
'------------------------------------------------------------------------------
'機能 ファイルの存在チェックを行い、ファイルが存在する場合はファイル名の
' 後ろに連番を付加し重複しないファイル名を作成し返却する。
'引数 vFileName ファイル名
'戻り値 重複しないファイル名
'------------------------------------------------------------------------------
Function GetFileName(vFileName)
Dim fso
Dim ItemArray
Dim Extension
Dim FileName
Dim WkFileName
Dim No
Dim ZeroString
'ファイル名の拡張子を取得 -------------------------------------------------
ItemArray = Split(vFileName,".")
Extension = ItemArray(UBound(ItemArray))
'ファイル名の拡張子の前のパスを取得 ---------------------------------------
FileName = Left(vFileName, Len(vFileName) - (Len(Extension) + 1))
No = 1
WkFileName = vFileName
Set fso = CreateObject("Scripting.FileSystemObject")
'ファイルの存在チェック ---------------------------------------------------
Do Until Not (fso.FileExists(WkFileName))
'ゼロパディングの処理 -------------------------------------------------
If Len(CStr(No)) < 4 Then
ZeroString = String(4 - Len(CStr(No)),"0")
Else
ZeroString = ""
End If
'ファイル名に番号を付加 -----------------------------------------------
WkFileName = FileName & "_" & ZeroString & CStr(No) & "." & Extension
No = No + 1
Loop
'ファイルを返却 -----------------------------------------------------------
GetFileName = WkFileName
End Function |
 |
スクリプトの詳細については説明しませんが、以下の箇所を変更すると、カスタマイズが可能です。
「C:\Test\データ\」 : テキストファイルの出力先です。環境によって任意に変更してください。
また、出力先のフォルダはあらかじめ作成しておく必要があります。
「{%N_DATA(QRコード読み取り1.注文番号)}」 : 出力されるテキストファイル名です。QRコードから読み取ったデータの名前を指定します。ここでは、注文番号になっています。
「wfile.WriteLine 〜」 : テキストに出力する内容です。ここではカンマ区切りで出力する記述になっています。項目名や、区切り文字などを変更すれば、カスタマイズができます。
◆スクリプトのテキストファイル (Tips02_Script.txt)
|
 |
次に、右上の処理名から、「文書移動」を選択して、処理追加ボタンを押します。
設定一覧の設定1に「文書移動1」が追加されます。
|
 |
移動先フォルダには、以下のように入力します。
C:\Test\保存\{%DATE(yyyy)}\{%DATE(mm)}\
実行時には{%DATE(yyyy)}の部分が年に、{%DATE(mm)}の部分が月に置き換わります。
また、ファイル名に、QRコードの名前付きデータ「注文番号」の内容を付けたいので、「ファイル名をリネームする」にチェックをいれ、ファイル名の欄に、
{%N_DATA(QRコード読み取り1.注文番号)}.xdw
と入力指定します。
名前付きデータ「注文番号」の内容が「01234」とすると、付与されるファイル名は、「01234.xdw」となります。
ここまでの設定で、QRコードを読み取り、QRコードの内容にしたがってフォルダ配信を行うことができます。
但し、QRコードが読み取れない場合、エラーになり、文書がそのまま残ってしまいます。
この処理をDocuWorksDeskのサムネイル画面から行う場合は、文書が残るのをユーザが確認できますので、問題ないですが、フォルダ監視で自動化する場合には、Tips01の後半を参照して、エラー文書の移動設定を行ってください。 |
 |
実行結果
実行すると以下のような結果になります。
|
 |
保存フォルダの下に2005\04フォルダが作成され、2つの文書が移動されます。ファイル名には、注文番号が付与されています。 |


 |
データフォルダには、2つのテキストファイルが作成されています。中身はそれぞれ、QRコードの内容がカンマ区切りで出力されています。
|
◆注意
このスクリプトサンプルでは、1文書につき、一つのQRコードしか検出しません。複数ページが束になった文書を処理しても、正常に動作いたしません。 |