PiP機能で実行した時のみ、Send Hot keyが効かなかった話

むか～しむかし、UiPath Studio 19.10が出回っていた頃。

とある小さな村に住むryokoという者が、RPAツールのUiPathを使って、細々とワークフローを作って暮らしておった。

作られたワークフロー達はそれはもう大切に大切に育てられたおかげで、エラーも出さずによう働くようになり、実行ツールのUiPath robotに登録され、毎日、ryokoと楽しく暮らしておった。

そんなある日、とうとうryokoの住む村にも、Studio 20.10と、UiPath Assistantがやってきた。

ryokoはたいそう喜んだ。
UiPath robotから進化したUiPath Assistantには、PiP（ピクチャ イン　ピクチャ）機能という、それはまぁとてつもなく、便利な機能があったからじゃ。

RPAっちゅーもんは、だいたいはwindowsの画面と操作を占領しちまう。
だが、UiPathのPiP機能は、Windouwsの中にもう1つWindowsが開いて、そん中でRPAを実行してくれる。
同じデスクトップ画面の中で、RPAと自分が別々の作業をしていられるというわけじゃ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/301891/2ac93fee-8d45-8c45-f4a8-b793ba89a3c6.png)

ryokoは19.10で作ったワークフロー達を全員デバック実行し、Assistantでも実行し、皆が元気に働く姿をその目でちゃぁんと確認した。

そしてとうとう、PiP機能で実行した時。恐ろしい事が起こったんじゃ…

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">SelectRange使ってExcelシートをアクティブにし条件合致ならショートカットキー使ってうにうにっと処理するワークフロー。<br>デバッグと通常実行なら問題ないのだけど、PiP実行するとシートがアクティブになってくれない…なんでや〜ん😗<br><br>仕方ないのでGUIクリック操作に修正かな、これは。<a href="https://twitter.com/hashtag/UiPath?src=hash&amp;ref_src=twsrc%5Etfw">#UiPath</a></p>&mdash; ryoko (@RPA_Journey) <a href="https://twitter.com/RPA_Journey/status/1415118020901359623?ref_src=twsrc%5Etfw">July 14, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

PiP機能でも問題なく働くワークフロー達の中で一人だけ、『Send Hot Key』アクティビティを使っている子がおって、その子はExcelブックの各シート名を見て、使わないシートはAlt+hdsでシート削除をする仕事をしていた。
その子が何でか、PiP機能を使った時だけ、使わないシートを削除せんようになってしまったんじゃ。

ryokoは悩んだ。
なんせデバッグだと問題ない、Assistant実行も問題ない子じゃ。
原因がとんと掴めず、ただただPiP実行とデバック実行の間をおろおろとするばかりじゃった。

そんなことを何度か繰り返していたryokoだったが、ふと、アクティビティの待機時間を使えば、ちゃあんとキー入力出来ているかを見れるのではないかと思いついた。
デバック実行でもない限り、そりゃもう、つむじ風みたいに仕事をしちまう子だから、おちついて仕事の様子を確認するには、ryokoでも分かるよう、ゆっくりと入力してもらう必要があったんじゃ。

そこでryokoは、『Send hot key』アクティビティの実行前と、キー入力間それぞれに、限界ぎりぎりの1000ミリ秒を設定したワークフローにし、それをPiPで実行した。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/301891/5585abce-4500-9bd1-eca0-54b146daa789.png)

実行前にシートが選択できているか、そしてキー入力間ではそれぞれのキーをちゃんと叩けているかが、これでryokoでも分かった。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">違うな、シートはアクティブになってる。<br>ショートカットキーが効いてないんだ🤔🤔🤔<br><br>ふむ〜ん…</p>&mdash; ryoko (@RPA_Journey) <a href="https://twitter.com/RPA_Journey/status/1415120433037283331?ref_src=twsrc%5Etfw">July 14, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Alt+hの時点でExcelはこんな感じでずらずらとショートカットが表示されるはずなんじゃが…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/301891/690094cd-e911-4f52-c5fa-0475bd10c3bb.png)

PiP実行した時だけ、Excelはシートを移動するだけで、Alt+hdsキーが入力されてないことが分かった。

だが、PiP実行した時だけキー入力されない理由が分からない。

ryokoはこれまたうんうんと悩み、『デバック実行とAssistant実行』と『PiP実行』で何が違うかを考え、そしてはたと思い当たった。

『今動かしている画面』が、2つある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/301891/b680d450-d469-138b-770d-12fa2cb60377.png)

そう、PiP機能は『Windouwsの中にもう1つWindowsが開いて、そん中でRPAを実行してくれる。同じデスクトップ画面の中で、RPAと自分が別々の作業をしていられる』。

それに気づいたryokoは、慌てて『Send hot key』アクティビティのセレクター設定を覗き込んだ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/301891/6bbad798-0ac1-c3da-498a-5891a9cc5b8e.png)

なんと驚いたことに、『何の要素に対して操作するか』を指定するセレクターが、なあんもなかったんじゃ。

セレクターが空白だと、今触っているアプリに向かってキーを入力する。

デバック実行やAssistant実行だと『今触っている（アクティブ）アプリ』は1つしかないので、Excelの『Select Range』アクティビティを使ってシートを選択した時にExcelが『今触っている』になるので、セレクタを設定しなくても何も問題なく働いてくれとった。
だが、PiP実行だとryokoが触っているアプリとRPAが触っているアプリ、2つある状態になる。

そんで、キー入力はryokoが触っているアプリの方に向かって入力されておった、と言うわけじゃ。

本当だったら、セレクターは面倒臭がらず、ちゃんと設定しておかねばならん。
さもないともしかしたら、偶然全く別のアプリのショートカットが動き、とんでもない騒動になるかもしれんしの。

ぞおっとするそんな騒動を思い浮かべたryokoは、冷や汗を流しつつ、セレクターにExcelを指定した。

こうして『Send hot key』アクティビティを使ったワークフローはPiP機能でも元気に仕事をするようになり、ryokoともっともっと、楽しく暮らすようになりましたとさ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/301891/483a6b58-bc6f-07f9-fd98-63508e8d301b.png)




めでたしめでたし。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">解決！<br>セレクターを指定してあげたらうまく行った。<br>（今まではsend hot keyのセレクタが空白だった）<br><br>PiPの場合は画面が2つになっちゃうから、ちゃんとセレクタで「これを操作ね！」と指定してあげないと駄目みたいだね。</p>&mdash; ryoko (@RPA_Journey) <a href="https://twitter.com/RPA_Journey/status/1415131655044362242?ref_src=twsrc%5Etfw">July 14, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#…という昔話は、2019.xxまでの作り方（クラシックデザイン）で作った場合の話。
2010.4以降のStudioですと『Send hot key』アクティビティはクラシック扱い（モダンデザインだとデフォルト表示されない、古いアクティビティ）なので、代わりに登場した『Keyboard Short Cut』アクティビティ使うことになると思うのですが。

こちらは『アプリケーション/ブラウザーを使用』アクティビティ（『要素スコープ』アクティビティと似た感覚の新アクティビティ）とセットで使わざるをえないので、本件のような事態には陥らないかと思います( ｰ`дｰ´)ｷﾘｯ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/301891/61e3c091-0b18-eba3-5d69-e29226409c9b.png)

これにて本当に、めでたしめでたし。:hugging: