3.A.1.4. データセットの行をループさせる

さて、いよいよページ内の入力フォームに、Excel ファイル から 集めたデータを入力します。

OpenRPAツールボックスの中にあるForeach DataRowアクティビティをドラッグしてください。次に、Foreach DataRowアクティビティの内部で、System.ActivitesツールボックスからSequenceアクティビティをドラッグしてください。

前述のように、Read Excelアクティビティから割り当てられたDataSet内の各シートは、Tables属性内のコレクションとしてインメモリに保存されます。

Tables属性内の各シートは、Excel ファイル内のシートに応じて取得され、これらのシートは0から始まる番号が付いています。 例として、Excel ファイル内のDataTableに行を追加する場合、まずDataTable クラスのオブジェクトに割り当て、アクティビティを使用してテーブルに行を追加することになります。

各行を取得するには、取得したい行に0から始まる番号を1つの変数に代入するか、Foreach DataRowを使って各行を適宜自動的にループさせることができます。この例では、dsという変数にDataSetが代入されており、これがテーブルを取得するための変数となっています。シートが1つしかないので、ds.Tables(0)を使って、Foreach DataRowが値を取得するテーブルを代入しています。

行が取得されるDataTableを割り当てた後、列はForeach DataRowアクティビティの左側に割り当てられた変数内の属性にマッピングされることに注意してください – このケースでは、DataColumnの値を返すか設定するです。

Foreach DataRowループは基本的に、行内のすべての値( 名前 会社 、…) を繰り返し処理し、各フィールドが属する Web ページ内のXPathセレクタ アイテムに割り当てます。これにより、RPA Input Forms Challenge(http://www.rpachallenge.com/) ページ内の値が入力されるようになります。

備考

DataRow オブジェクトはDataTableからマッピングされた各行です。DataRowオブジェクトとそのプロパティ、メソッドを使用することで、ユーザーはDataTable内の値を取得、評価、挿入、削除、更新することができます。また、DataRowCollectionは DataTable内の実際のDataRowオブジェクトを表しています。DataRowCollectionにマッピングされた各カラムは、DataRowクラスオブジェクトの属性であるインデックスを使用して取得することが可能で、行内の1列目を取得する場合は、row(0)を使用します。DataRowクラスの詳細については、MicrosoftのDataRowクラスに関するドキュメント(https://docs.microsoft.com/en-us/dotnet/api/system.data.datarow?view=netcore-3.1)へのリンクを参照してください。

images/openrpa_workflow_example_rpa_challenge_loop_through_each_assign_row.png
images/openrpa_workflow_example_rpa_challenge_excel.png