1データの各項目を配列に追加

ブラウザ明細画面で、下記のような項目があるのですが、
これの各項目をデータ数分配列に格納して、別の画面の入力にて使用したいと思っています。

①Web画面の各項目の値を取得(各行対象番号の時にデータの各項目を取得)
コード1 コード2 コード3 個数
10 5 8 1

②別Web画面に①の構成画面があるため、取得していた値を各行の項目に入力していく。

Excelを使用して、データテーブルを使用するやり方がメインだったため今回の場合の、
配列への格納や繰り返しの使用方法についてアドバイス頂ければと思います。

こんにちは

上記はDataScraping機能を用いて、DataTableとして取得する予定でしょうか?
そうであれば、そのDataTableを繰り返し(各行)を用いて、イテレートして
row (またはCurrentRow)のItemArrayプロパティで、各値を配列として取得できます。

HI @r.nakanishi

I think this data are in the Excel file

If yes, You can try with this approach

  1. Use Read range activity → Store it as DtInput

  2. Use Open Browser activity to open the web page where you need to enter the data

  3. Use For each row in data table activity

Inside the for each row activity

  1. Use attach browser activity and indicate the screen on the web page

  2. Use Click activity and click desired location where you need to enter the data.

  3. Use Type into activity pass the column like in the below

CurrentRow("Column Name").ToString.Trim

Like wise repeat for all the column required. after completing one iteration, Bot will goahead to the next transaction.

image

Regards
Gokul

ご回答ありがとうございます。

いえ、表形式の画面とかではないので、フルテキストを取得等で値の取得を行う予定です。
その取得した値を配列?で保持しておき②の画面で繰り返し入力させたいと思っております。

thank you
It’s a browser, not Excel

こんにちは

そうでれば、取得したテキストをGenerateDataTableでDataTableに変換して処理する

あるいは文字列操作で個別に処理する

等が考えられます。例えば後者の場合は以下になります。

きれいなデータが取れない場合は、正規表現などで必要なデータを抽出する必要があるかもしれません。

ありがとうございます。
データの各項目を取得して、1行目データ(“商品コード1”).Tostringといった感じで処理したいと思っております。
後者の処理でも対象データの項目名を指定するといったやり方でできますでしょうか?

こんにちは

このような形式にしたいのであれば、GenerateDataTableでDataTableにした方がよいかもです。
あるいは正規表現で、名前付きグループで抽出するかですね。
単純なSplitですと、別にDictionary等に代入する必要がでてくるかと思います
実際のデータは以下のような単純なものでしょうか?このレベルであればGenerateDataTableの方が手っ取り早いようには思えます。

コード1 コード2 コード3 個数
10 5 8 1

そうです。
1ページ明細12行があって、指定のコードの場合②で使用するため取得をする。
②の入力に使用するため、各項目を1つのデータとして、扱いたいのでデータテーブルだったりDictionaryに入れれば良いのかなと思っております。

データテーブルを構築と何かのアクティビティでデータテーブルにデータを追加できるということでしょうか?

こんにちは

テキストからデータテーブルを生成(Generate DataTable)アクティビティで以下の様に
テキストからカラム名付きでDataTableを生成することができますので、
あとはForEachRowでループさせれば良いかと思います。
(下記はWizardの画面です)

ブラウザの項目からフルテキストで各行ずつ取得をする。1行目の各項目は1行目のデータとして扱うようにしたいのですが、
テキストからデータテーブルを生成するというのはどのようにすればよいでしょうか?

取得してきたものをテキストに書き込んで、そこから生成するということですか?

以下のサンプルと矛盾しているように思えるのです(下記は一行目はヘッダ情報に見えます)が、実際はどのようなデータが取得されていますでしょうか?

コード1 コード2 コード3 個数
10 5 8 1

あるいはヘッダ情報を入力したいということでしょうか?
そうであれば1行目をカラムヘッダにするのオプションをオフにすると、1行目がそのままデータとして取り込まれます。

説明が分かりづらくすみません。
ヘッダはどの項目名か見えた方が良いと思ったため自分で追加したものです。

下記のような画面になります。
下記の1~12行目にある条件に当てはまった場合は対象行の各項目を1データとして保持しておいて、
別の似た画面の明細に入力するために配列等に格納したいと思っております。

1111とかが商品コードとなります

こんにちは

この画面ですとDataScrapingの方が良いように思えますが…
あるいは各テキストボックス単位で要素指定ができない画面でしょうか?

フルテキストを取得の場合、データの境界がうまく分離できるか(特に空欄が含まれる場合)が
可否のカギになるかと思います。

この画面に対して、データスクレイピングは試したことありませんが、
各テキストボックス単位で湯祖指定はできますね。

ただ、明細中に億特定のコードの2組がある場合、片方だけを(画面見切れてますが)削除フラグをチェックするといったこと作業が必要なため、スクレイピングは使用しづらいのかなと思って使用しておりません。
2ページ目以降の明細にも削除フラグを立てたり画面遷移する必要もあるため。

そのため、セレクターの行数を1行ずつカウントアップして1件ずつデータを見るようにしているため、各行の項目をフルテキスト取得後、1行のデータとして保持して入力したいなと思っておりました。

空欄があって改行されていますね。trim関数でいつも削除して入力やExcelに書き込みをするようにしております。

こんにちは

対象が1行のみということであれば、あえてDataTableにしなくてもSplit等の文字列操作、
正規表現等でも可能です。最初のサンプルですと単純に空白でSplitすればデータは分割すれば
すみますので、それを元にデータを入力します。(必要に応じてDictionary等に格納しても
良いかと思います)
このあたりのアプローチは実際のデータに依存しますので、ダミーでも結構ですので
より正確な情報を共有いただいた方がよりベターなアプローチがコメントできると思います。