TypeIntoアクティビティを利用して以下のような処理を自動化しようとしています。
①Webからスクレイピング
②Excelに範囲に書き込みを使用しスクレイピングした内容(datatable)を貼り付け
③貼り付けたシートから別のシートへコピー&ペースト
③の処理で、[k(f2)][d(ctrl)]ac[k(pgdn)]v[u(ctrl)]・・・・と記述しており、
上手く貼り付けできる場合と、「v」の文字だけだったり、何も貼り付けれなかったりします。
解決策はあるのでしょうか?それとも「ホットキーを押下」アクティビティで地道に1つずつ入力する必要があるのでしょうか?
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
November 26, 2019, 6:50am
2
コピー先のシートを対象に、改めて「範囲を読み込む」アクティビティで読み込んではいかがでしょう?
1 Like
HANACCHI様
回答頂きありがとうございます。
説明足らずで申し訳ありません。
読み込む処理は上手くできており、貼り付けも上手くできます。
ただ、本来3行で分けて出力させたいところ、スクレイピングした際に1行で出力されてしまっています。
なので一度貼り付けて、F2キーでセルの編集状態にした後で全選択をして、別シートに張り付けて3行に分けようとしていました。
範囲を読み込むアクティビティだとまた同じように複数行が1行の塊となって読み込まれてしまうため上手くいきませんでした。。
Yoichi
(Yoichi)
November 26, 2019, 3:46pm
4
こんにちは
ただ、本来3行で分けて出力させたいところ、スクレイピングした際に1行で出力されてしまっています。
EXCELに書き込む手前で処理をしてしまったほうが安定するような気もしますが...
類似になりますが以下のような話に近いかもしれません。
いつもお世話になっております。
以前、同じような質問をさせて頂いたのですが、再度知恵をお貸し頂きたく投稿させて頂いております。
Excel内の値を1つずつ For each Row で確認し、セル内の値が特定のものであれば変数に格納する といったロボを作成しております。
詰まっておりますのは、読取対象のExcel内の1セル内に 値¥n値 という形(メモ帳に出力し確認)で複数値があるセルがあり、そのセルを読みに行くと 値¥値 と読み取ってしまい正確な取りたい値が取れない状況です。
DataRow型の変数の1セル内に格納された値を上手く分割出来ないでしょうか。
以上、宜しくお願い致します。
③の処理で、[k(f2)][d(ctrl)]ac[k(pgdn)]v[u(ctrl)]・・・・と記述しており、
上手く貼り付けできる場合と、「v」の文字だけだったり、何も貼り付けれなかったりします。
おそらくタイミングの問題等でキー入力が空振りしているのではないかと思います。
Type IntoのDefaultモードで入力しているのであれば、DelayBetweenKeys(キー入力間の待機時間)プロパティの値を大きめにすることによりキープレス間の間隔が長くなります。これにより、空振りする確率が小さくなる場合があるので、一度試してみては?と思います。
2 Likes
Yoichi様
回答頂きありがとうございます。
Excelに入力する前に処理できたらいいな、、とは思っていました。
参考ページを教えて頂きありがとうございます。
DelayBetweenKeysについても触ってみました。
デフォルトの時間から倍にしてみたところ、かなり改善されましたが、数か所上手くコピペされて
いない箇所がありました。もう少し触ってみようかなと思います。
1 Like
Yoichi
(Yoichi)
November 27, 2019, 2:27am
6
こんにちは
以下補足になりますが...
DelatBetweenkeysは一律にしか待機時間を設定できませんので、特定の部分だけの待ち時間を長くしたい場合は、アクティビティを分けることによりアクティビティ自体のDelayBeforeやDelayAfterあるいは間にDelayActivityで調整することも可能です。
理想的には各アクション完了時に起きるであろう画面変化の完了をFind Elementなどで確認してから次のアクションを起こすことが良いのですが、出来ない場合もあるので、その場合は、最終的な成否を判断して、失敗しているようならRetryするようなことも組み入れると、より安定すると思います。
1 Like
Yoichi様
こんにちは
補足の説明ありがとうございます。
実はホットキーの押下アクティビティで全てのキーを入力した場合は、
上手く動作することを確認していました。
ただ、TypeIntoアクティビティでできない理由が分からなかったため質問させていただきました。
やはり待機時間を設定することで調整するのが良さそうですね。
Retryする仕組みは組み込みたいなと思っていました。。
Yoichi様は普段どのアクティビティで実装していますか?
Retry Scopeとかを使うのでしょうか?
Yoichi
(Yoichi)
November 27, 2019, 3:01am
8
こんにちは
Retry Scopeとかを使うのでしょうか?
当該処理で例外が発生した場合にその内容把握が必要のないようなケースは、Retry Scopeを使うケースが多いです。詳細な制御が必要な場合は自前でループを作りTryCatchや要素有無検出などを使います。
1 Like
Yoichi様
制御が必要な場合は、自前でループを作成するのですね。
貴重な情報をありがとうございます。
1 Like
system
(system)
Closed
November 30, 2019, 3:05am
10
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.