いつもお世話になっております。
社内web上でデータ変更を希望しております。
イメージ図

web上で見た目は表になっており、
上から1行ずつチェックしていき、
列「区分」において、1、3、5のいずれかに当てはまれば、
列「項目」の文字列を削除しようとしております。
前回別のものを作る際、こちらで
web上で表に見えるものは、「データスクレイピング」で表を読み込み、
1行ずつチェック⇒該当すればセレクターに変数を入れ処理する方法を教えて頂きましたが、
今回は、データスクレイピングをしようとしても、表として読み込めませんでした。
また、1セルだけ読み込んで文字取得も試みましたが
1セルの選択が出来ず、選択範囲が画面全てとなってしまいました。
このような場合、どのように処理をすれば良いのか教えて頂きたく
よろしくお願い致します。
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
2
力技ですが、「属性を取得」アクティビティ(だったっけかな?)で、outtextを取得して、テキストファイル化して、値が取れるかどうか…
取れたら色々と加工して、必要な情報に整形して…
Yoichi
(Yoichi)
3
こんにちは
以下POST以下の内容を確認してみてください。基本的にはGetVisibleTextやNGetTextのNativeモード等で文字列と座標情報を取得して、それを利用すると良いかと思います。
はなっち様
Yoichi様
いつもありがとうございます。
過去に同じパターンをされたことのあるYoichi様の例で行ってみようと思います。
本当にいつもありがとうございます。
Yoichi様
このように作ってみました。
しかし、どのようにして該当データを探し、座標を取得するのか分かりませんでした。
理解が悪く申し訳ございませんが、教えて頂きたくよろしくお願い致します。
Yoichi
(Yoichi)
6
こんにちは
以下のPOST確認済みでしょうか?
まずはGetVisibleTextのWordsInfoの出力に対して上記の式を使って、文字や座標が取得できるかを確認してみてください。
理解が悪く申し訳ございません。
メッセージボックスへ書き出したものがこちらになりました。
Yoichi
(Yoichi)
8
こんにちは
この中で対象となる文字列あるいはそのヘッダーとなる文字列等は取得できていますでしょうか?
ありがとうございます。
ヘッダーとなる文字列は取得出来ていました。
セルの中身となる文字列は途切れ途切れになっておりました。
Yoichi
(Yoichi)
10
そうであれば、まずはヘッダから取得すべき、あるいは編集すべき項目のX座標を特定してください
Y座標ですが、データが取得できていれば、チェックすべき内容とそれを照合します。細切れの場合は
結合作業が必要になるかもしれません。
ありがとうございます。
取得すべきヘッダ=名前
編集すべきヘッダ=値
なので

上記より取得すべきヘッダ X=996
編集すべきヘッダ X=1118
Y座標の特定方法はどのようになりますでしょうか。
Yoichi
(Yoichi)
12
最初のPOSTの1,3,5に該当する数字、テキスト上にありますでしょうか?
あればそれと座標情報の組み合わせで特定します。
ありがとうございます。
文字が途切れ途切れになったせいか、行数が多くなり、
web上の表の上から4行分しかメッセージボックスに座標は入っていませんでした。
セルに書き込みで書き込みをしてみたのですが、
もっと少ない範囲でしか取れませんでした。
全ての取り出した座標を書き出す方法はありますでしょうか。
Yoichi
(Yoichi)
14
こんにちは
取り急ぎ、メッセージボックスではなく、WriteTextFileでテキストファイルに書き出してみて
取れている範囲を確認してもらえますでしょうか?
ありがとうございます。
全44行中、最後7行を除く行が取得できました。
Yoichi
(Yoichi)
16
こんちは
その7行は画面に表示されていないものではないでしょうか?
GetVisibleTextアクティビティはその名の通り表示されているものしか取得できませので、
そのようなものがある場合はスクロール(pgdown)などと組み合わせる必要があります。
ありがとうございます。
仰る通り、7行はスクロールしなければ見えない場所にありました。
取得したY座標は1行下がるごとに25ずつ増えていく規則があることが分かりました。
クリックアクティビティを作成し、
その中へ取得したⅩ座標・Y座標を当てはめていくのかと思ったのですが、
クリッピング領域は数字4つで示すようでした。
カーソルの位置と、左×右、上×下 の数字が異なっていたので、
今回の場合はどのようにすれば良いか教えて頂きたくよろしくお願い致します。
Yoichi
(Yoichi)
19
クリッピング領域ではなくCursorPositionを使ってみてください