> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# その他のサンプルスクリプト

> Pages moved イベントを ドキュメントマージイベント に変換し、ドキュメントのマージ時にドキュメント登録パラメーターをマージする VBScript および JScript のサンプルです。

これらのサンプルスクリプトでは、ABBYY FlexiCapture でドキュメントマージイベントを処理する方法を説明します。各例は、VBScript と JScript の両方で利用できます。

<div id="turn-the-pages-moved-event-into-a-document-merge-event">
  ## Pages movedイベントをドキュメントマージイベントにする
</div>

このハンドラーは [Pages moved](/ja/flexi-capture/appendix/scripts/moving-pages) イベントで実行され、これをドキュメントマージイベントに変換します。ドキュメントのすべてのページが移動されると、そのドキュメントは対象ドキュメントに完全に取り込まれます。`Events.OnDocumentsMerge` プロシージャは、ドキュメントマージイベントを処理します。

<div id="vbscript">
  ### VBScript
</div>

```vb theme={null}
Dim currentDocument, currentDocumentPagesMoved
set currentDocument = Pages( 0 ).Document
currentDocumentPagesMoved = 0

For i = 0 to Pages.Count - 1
    If Pages( i ).Document.Id <> currentDocument.Id Then
        ' 次のドキュメント
        If currentDocument.Pages.Count = currentDocumentPagesMoved Then
            ' 前のドキュメントからすべてのページが移動されました。イベントが生成されます。
            Events.OnDocumentsMerge TargetDocument, currentDocument
        End If
        Set currentDocument = Pages( i ).Document
    Else
Next

If currentDocument.Pages.Count = currentDocumentPagesMoved Then
    ' 最後のドキュメントからすべてのページが移動されました。イベントが生成されます。
    Events.OnDocumentsMerge TargetDocument, currentDocument
End If
```

<div id="jscript">
  ### JScript
</div>

```javascript theme={null}
var currentDocument = Pages( 0 ).Document;
var currentDocumentPagesMoved = 0;

for( i = 0; i < Pages.Count - 1; i++ ) {
    if( Pages( i ).Document.Id != currentDocument.Id ) {
        // 次のドキュメント
        if( currentDocument.Pages.Count == currentDocumentPagesMoved ) {
            // 前のドキュメントからすべてのページが移動されました。イベントが発生します。
            Events.OnDocumentsMerge( TargetDocument, currentDocument );
        }
        currentDocument = Pages( i ).Document;
    } else {
        currentDocumentPagesMoved = currentDocumentPagesMoved + 1;
    }
}

if( currentDocument.Pages.Count == currentDocumentPagesMoved ) {
    // 最後のドキュメントからすべてのページが移動されました。イベントが発生します。
    Events.OnDocumentsMerge( TargetDocument, currentDocument )
}
```

<div id="merge-registration-parameters-when-documents-merge">
  ## ドキュメントのマージ時に登録パラメーターをマージする
</div>

このハンドラーは、ドキュメントマージイベント発生時にドキュメントの登録パラメーターをマージします。ドキュメントが対象ドキュメントにマージされる際は、対象ドキュメントに存在しないパラメーターだけが新しいドキュメントから追加されます。

このコードは共有モジュールに保存し、ドキュメントのマージ時に `OnDocumentsMerge` プロシージャを呼び出します。詳細については、[Pages moved イベントをドキュメントマージイベントに変換する](#turn-the-pages-moved-event-into-a-document-merge-event)を参照してください。

<div id="vbscript">
  ### VBScript
</div>

```vb theme={null}
Sub MergeProperty(ByVal TargetDocument, ByVal propertyName, ByVal propertyValue)
    If TargetDocument.Properties.Get(propertyName) = "" Then
        ' ドキュメントにそのようなパラメーターはありません。
        TargetDocument.Properties.Set(propertyName, propertyValue)
    End If
End Sub

Sub OnDocumentsMerge(ByVal Target, ByVal Document)
    ' 登録パラメーターをマージします。
    For i = 0 To Document.Properties.Count - 1
        MergeProperty(Target, Document.Properties(i).Name, Document.Properties(i).Value)
    Next
End Sub
```

<div id="jscript">
  ### JScript
</div>

```javascript theme={null}
function MergeProperty( TargetDocument, propertyName, propertyValue )
{
    if( TargetDocument.Properties.Get( propertyName ) == "" ) {
        // ドキュメントにそのようなパラメーターはありません。
        TargetDocument.Properties.Set( propertyName, propertyValue );
    }
}

function OnDocumentsMerge( Target, Document )
{
    // 登録パラメーターをマージします。
    for( i = 0; i < Document.Properties.Count - 1; i++ ) {
        MergeProperty( Target, Document.Properties(i).Name, Document.Properties(i).Value );
    }
}
```
