新着情報
製品紹介
  読み取りの検証
  ソリューション例
  Tips
カタログ
ダウンロード
よくある質問
購入方法
サポート
その他
 

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コードしか検出しません。複数ページが束になった文書を処理しても、正常に動作いたしません。