見出し画像

RPAデベロッパー基礎㊹ Excel アプリケーション スコープと Excel 連携アクティビティ2

今日もUiPath Academyの「RPAデベロッパー基礎」で学習していきます


Excel アプリケーション スコープと Excel 連携アクティビティ

データベースのデータをフィルター処理して、結果を新しいファイルにエクスポート

従業員のデータベースがあり、特定の条件を満たす従業員の名前を抽出する必要がある

❶Excel ファイルを使用する標準的な方法は、データを抽出して DataTable 型変数に格納し、さまざまな操作を実行して目的の情報を得ること
❷データを同じファイルまたは新しい Excel ファイルに書き込む

1⃣ ワークブックの [範囲を読み込み] アクティビティァイル

パスを指定し、[出力] > [データ テーブル] プロパティに出力変数「InputDT」を作成
[プロパティ] パネルの [入力] > [範囲] フィールドは空のまま
ファイルにはヘッダーが含まれるため、[ヘッダーを追加] プロパティはチェックを付けたまま

2⃣ [データ テーブルをフィルター] アクティビティ

[入力データ テーブル] に変数 InputDT を指定し、 [出力データ テーブル] には、フィルター処理した結果を使用して異なるデータ テーブルを作成したくはないため、同じ変数を入力

[保持] オプションを使用して、フィルター処理する列を指定
「Age」はその 1 つであるため、名前列に「"Age"」と入力

年齢は 30 歳未満にしたいので「より小さい」演算子を指定

[値] を「30.00」に設定
「小数点以下のゼロ 2 つ (.00)」を必ず追加
そうしないと比較ができなくなってしまい、フィルター処理が行えない

所得に関連する条件を追加
値の横のプラス ボタンをクリックすると、下に新しい条件が表示

条件の前の [And] に注目してください。
このフィルター条件は他のフィルター条件とは別に追加する必要があるため、この [And] が非常に重要になります。
ただし、[And] をクリックして、[Or] に変えることもできます。

[Or] は、すべてが True である必要はない複数の条件に従ってデータをフィルター処理する場合に便利です。
たとえば、30 歳未満、または年間所得が 100,000 を超えるすべての従業員を探すことができます。

ですが、今は [Or] をクリックして [And] に戻し、[列] に「"Income"」と入力

今回は、所得が 100,000 を超えるすべての従業員を特定したいため「より大きい」演算子を選択し、[値] には 「100000.00」を入力

[範囲を読み込み] によって Excel から読み込まれたすべての数値データは UiPath では Double 型と解釈されるため、[フィルター ウィザード] でこれらの列の比較に使用する値は、常にこの例で行ったように「小数点以下のゼロ 2 つ」を追加するようにしてください。

次に、[出力列] タブをクリック

処理する特定の列を入力
すべての列を保持したいため、何もせずに [OK] をクリックして、[フィルター ウィザード] を閉じる

3⃣ フィルター処理した情報を、別の形式でデータ テーブルに保存する

[データ テーブルを構築] アクティビティを追加
・既存の列を削除、新しい列、「Name」「Age」「Income」を作成
(すべて String 型で、[null を許可] は無効化)

[繰り返し (データ テーブルの各行)]
(フィルター処理されたデータ テーブルの各行を反復処理し、必要な情報のみを抽出)
変数 InputDT を反復処理し、現在の行から特定のセルの値を出力する [行項目を取得] アクティビティを使用
必要なセルを指定するために、行項目と列名で示される「Row」を使用(インデックスよりも列名を使用する方が信頼性が高い)

[出力] に、新しい変数を作成
この例では、現在の行の「Name」列の値を抽出して String 型変数「Name」に格納
複製し、[列名] を「"Age"」に設定して、出力値に「Age」という変数を作成、System.Double 型に設定

特定のセルから情報を抽出するためには、[行項目を取得] のほかに [代入] アクティビティも使用できる

ここで抽出したい列の値 Income は 5 番目の列ですが、0 から数え始めるため、「4」と入力
続けて式に .ToString と入力

 

それには、新しい変数を定義して、Row.ItemArray メソッドを使用 Row.ItemArray(4).ToString

[To] フィールド内に変数「Income」を作成し、アクティビティの表示名も変更

[データ行を追加] アクティビティ
データを変数 AchieversDT に追加

ここで重要となる 2 つのパラメーターは、情報を追加するための DataTable 型変数の名前 (この場合は、AchieversDT) と追加するデータ (この場合は、配列形式)
配列は、中括弧で囲まれたコンマ区切りのリストとして指定{Name,Age,Income}

これで、プロセスはファイルの各行ごとに名前、年齢、所得を読み取り、先ほど作成した空のデータ テーブルにデータを追加する処理が行われるようになった

[Excel アプリケーション スコープ] を追加
[範囲に書き込み] アクティビティを追加変数 AchieversDT を指定して、[ヘッダーを追加] オプションを有効

Excel ファイルの標準的な使用方法は、データを DataTable 型変数に格納し、さまざまなデータ操作系アクティビティを実行して目的の結果を得ることです。

UiPath のワークブック系アクティビティである [範囲を読み込み] アクティビティを使用して Excel ファイル内のすべてのデータを取得するには、[範囲] フィールドを空に設定してください。

[データ テーブルをフィルター] アクティビティを使用すると、[フィルター ウィザード] にアクセスできます。

[フィルター ウィザード] に数値を追加するときは、必ず数値の後に「.00」と入力します。
そうしないと、フィルター処理は失敗します。

すべてが True である必要はない複数の条件に従ってデータをフィルター処理する場合は、[フィルター ウィザード] で条件ボタンを [Or] に切り替えることができます。
既定では、このボタンは [And] に設定されています。
[And] は、複数の条件がすべて True でなければならない場合に使用します。

処理する列を指定するために列名を使用しました。
列名の方が信頼性が高い傾向があるためですが、インデックスを使用することもできます。


この記事が気に入ったらサポートをしてみませんか?