🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
RPA

RPA(Robotic Process Automation)は、ホワイトカラーの間接業務を人間に代行して自動的に行う技術や概念を指します。人間が繰り返すクリックやキーボード入力といった定型的なデスクワークを行うことから、仮想知的労働者(Digital Labor)と呼ばれることがあります。

UiPath

UiPathは、API連携による高い拡張性を持つ幅広いシステムに適用可能なRPAプラットフォームです。開発・設定ソフトウェアや管理コンソール、バックオフィスロボットなどのツールがあり、必要に応じて導入することが可能です。

Blue Prism

Blue Prismは、複数ロボットの統括管理RPAです。各企業の事業部門に分散されているロボットに対し、プロセスの制御・監視・実行・スケジュールを行うコンソールでロボットの運用を推進。内部統制を強化できます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

2回答

4165閲覧

[BluePrism]「名前をつけて保存」のダイアログをspyして、名前を入力して保存…はできるのですが、ファイル名が化けます。

sumire_cl

総合スコア228

RPA

RPA(Robotic Process Automation)は、ホワイトカラーの間接業務を人間に代行して自動的に行う技術や概念を指します。人間が繰り返すクリックやキーボード入力といった定型的なデスクワークを行うことから、仮想知的労働者(Digital Labor)と呼ばれることがあります。

UiPath

UiPathは、API連携による高い拡張性を持つ幅広いシステムに適用可能なRPAプラットフォームです。開発・設定ソフトウェアや管理コンソール、バックオフィスロボットなどのツールがあり、必要に応じて導入することが可能です。

Blue Prism

Blue Prismは、複数ロボットの統括管理RPAです。各企業の事業部門に分散されているロボットに対し、プロセスの制御・監視・実行・スケジュールを行うコンソールでロボットの運用を推進。内部統制を強化できます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

2グッド

2クリップ

投稿2019/10/07 06:02

編集2019/12/20 05:12

前提・実現したいこと

この手のダイアログを「spyできません」という質問をここで何回もしました。
たとえば… [BluePrism]IE11の「アップロードするファイルの選択」をAttachできません。

今回はこれです。
イメージ説明
「これのファイル名のところに何か入ってたらクリアして、保存先のフルパス(ファイル名は日本語)を入力して、保存ボタンを押す」
というのが、やりたいことです。

発生している問題

まず、アプリケーションモデラーはこんな感じで、「ファイル名(N)」のところはWin32で取りました。ボタンとかはAAです。
イメージ説明

操作ステージで「ファイル名入力」を作った中身がこれです。
イメージ説明

そして保存されたファイルが……文字化けします……
イメージ説明

実行中によく観察していると、「ファイル名(N) 」の欄に入力しているところで既に化けています。
ということは、BluePrismとWindowsダイアログの文字コードが違うのが原因ということで……

とりあえずの回避策

まず、ファイルフルバスの文字列を、Utility-EnvironmentのSet Clipboardで、クリップボードにコピーします。
それから
操作ステージで、

  • 「ファイル名(N)」に、Click Window Centre
  • 「名前を付けて保存」に、Global Send Keysを3回

「名前をつけて保存」に対して3回やっている「Global Send Keys」の中身は
- "~a"
- "{DELETE}"
- "~v"

つまり、一旦クリップボードにコピーしてペーストしている感じです。
これだと化けないでちゃんと漢字のファイル名で保存できるんですが、なんか…これでいいのか大きな不安があります……
そもそもクリップボード経由でデータを受け渡すのがそんなに大丈夫な方法ではないですし……

補足情報(FW/ツールのバージョンなど)

BluePrismは6.3.0です。ブラウザはIE11です。


##【追記】

ご教示いただいた方法で漢字などの2バイト文字は入るようになったのですが
まだ「半角カナが化ける」という問題が残ってしまっているので、再度質問を開きなおしました。

これはBluePrismではなくてUiPathの説明ページなのですが
【できるUiPath】ブラウザーやアプリへの文字入力がうまくいかないときは? オプション設定での対処方法

このページの説明図のなかに「シミズマサシ」が「dnr@jxd」になってしまっている箇所があって
私が今困っている現象がまさにこれです。
そして、これって、「化けている」のではなくて
半角カナ入力で「シミズマサシ」と入力したときのキーそのままですよね?(シ→D、ミ→n ……)

私がBluePrismでしたいのは、まさにUiPathのこの操作の「入力をシミュレート」でやっていることなのですが
UiPathのこの機能では、内部で何が行われているのでしょうか?
それがわかると、BluePrismでこれを実現できるような気がします。

EnterpriseOcean👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自分がいつも実装している方法を共有します。

書き込みステージでダウンロードダイヤログの「ファイル名(N)」の入力欄へ値を渡す方法が一番安全だと思いますが、直接渡して保存ボタンを押しても反映されないので、下記の方法で実装しています。

1.Win32モードで取ってきた入力欄に対して、操作ステージの「windows press keys」で値を更新します。

イメージ説明

入力欄が更新されているかどうかをチェックする用の値なので、入力値なんでもいいです。

!イメージ説明](dbaf1349f2281e01fcd4ff20b6d38269.png)

実行した結果はclear+元のファイル名になります。
(この時点でinputがactivateされたため、write stageで入力しても値は更新されます。)

2. 書き込みステージで入力したい値を入れます

イメージ説明

イメージ説明

実行すると全ての値は更新されます。半角カタカナも入力できます。

3.win32モードで取ってきた保存ボタンをpressします。

イメージ説明

イメージ説明

ファイル名が正しく保存されたと確認できます。

もし2.3.ステップだけでやると、値はダイヤログに反映されないので、保存されたファイル名はデフォルト値のままになります。

なのでwriteステージをwindow press keysのように利用したい場合、1.ステップでclearみたいな値を仮に入力して、activateさせる必要があると思います。

ちなみにclearもある意味タグとして作用しています。
正常の場合、clearは絶対消されるため、もし保存されたファイル名にclearが残っていたら、ループ処理が上手くできてないとか、データリセットができていないとか、そもそも入力が成功ではないとかの確認に役立ちます。

投稿2019/10/09 03:45

tchenglung

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sumire_cl

2019/10/09 07:57 編集

できました! このファイル名だけではなくて、Webフォームでも試してみました。 操作ステージでなんか入力しておいて(要素はUIAで取得)、それから書き込みステージで入力(ここではHTMLモードで取得した要素を使う) とやったら半角カナもちゃんと入りました。 ただ、同一の要素をUIAとHTMLと両方で取得(つまり同じ要素に対するものが2個ある状態)になってしまっているのが、私のやりかたなんかちがうってことですよね……。試します。
tchenglung

2019/10/09 08:14

spyモードによって、使えるactionも異なりますので、同じ操作対象に対して、何個elementを作るのが普通だと思います! ちゃんと命名すればいいと思います。 例えば、今回みたいに、入力欄を操作したい場合、 Input-入力欄(Win32) Input-入力欄(UIA) Input-入力欄(HTML) のように命名すれば大丈夫だと思います。
sumire_cl

2019/10/09 08:18

おお、そういうやりかた合ってたんですね。 Webフォームのほうで 件名-Win 件名-UIA ってアプリケーションスコープを作って、なんかこれ合ってるのかな…と悩んでしまいました。
tchenglung

2019/10/09 08:29

ベストプラクティスだと思います!
EnterpriseOcean

2019/10/09 08:50

凄い! 参考になります。 ここまで出来ると何でも対応できる気がしてきました。
guest

0

私の環境でも [ファイル名] フィールドを Win32 モードでスパイし、[Window Press Keys] アクションを利用すると文字化けが再現しました。

[ファイル名] フィールドを AA または UIA モードでスパイし、[Global Send Keys] アクションを用いると文字化けせずに期待通り動作しました。

結果的に上記の「とりあえずの回避策」と同じ回避策になりますが、今回のようなケースでは AA モードをご利用になるのが良いのかなと思います。

よろしくお願い申し上げます。

投稿2019/10/08 10:39

EnterpriseOcean

総合スコア276

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sumire_cl

2019/10/09 00:37

なるほど!これだったら化けませんでした! ctrl+Vみたいなコピペコマンドを送るよりはこちらのほうがいいように感じます。 Win32モードだと、うまい具合に文字コードを扱ってくれずにそのままの状態で行ってしまうのでしょうか。 どのモードがどう違うのかをまだあまりわかっておりませんので、いろいろ試してみます。ありがとうございます。
sumire_cl

2019/10/09 01:27

ただ、ご提示くださった方法でも「半角カナ」はまだ化けます……。 そもそもファイル名に半角カナを使うなって話なんですが……。 丸数字とか記号とかは化けませんでした。
tchenglung

2019/10/09 03:46

自分の環境では化けでいませんでしたが、IME入力状態に関係あるかもしれません...(あくまで推測です><)
sumire_cl

2019/10/09 09:05

これ、予め入力欄に行って、IME入力モードを日本語ONにすると、また違う化け方をします。 つまり、おっしゃるとおり、IMEモードによってこうなってきているようです。 なので、漢字アルファベット半角カナ混じりのファイル名が来られたらこの方法ではお手上げ、ってことですね……(´;ω;`)
tchenglung

2019/10/09 09:13

自分は英語のOSと英語のロケール(locale)でBlueprismを起動する状態で試してみたら化けていないので、恐らくこの方法で入力したい場合、また別の設定をいじる必要があるかもしれません>< (エンコードについて詳しくないので、上記のコメントはあくまで個人の推測です...)
dodox86

2019/10/09 12:43

横からすみません。BluePrismの製品詳細は存じ上げませんが、キー入力に関するもので、通常はIMEを経由して入力するものでは文字化けは充分有り得ます。キーボードからの入力は一打鍵ごとに仮想のキーコードでWindowsシステム内を言うなれば行きかうもので、IMEを経由してやっと日本語のUNICODE文字列として確定し、テキストボックスなどに出力されます。コピペはクリップボード経由で既にUNICODE文字列として完成したまま該当コントロールにペーストされるので、化けません。
sumire_cl

2019/10/10 00:28

インフラ界のかたが降臨!dodox86さんありがとうございます。 つまり、えーと、tchenglungさんの方法で言うと、 最初に操作ステージでファイル名入力欄をactivateしたときに、WindowsのIME(つまりShift-JIS)でやりますという状態に持っていってるので、次の書き込みステージでは文字コードが確定し、文字化けせずにちゃんと入る ということですね? IMEを経由しないで(もしくは先に文字コードを確定させておいて)文字列を送ることが必要であるということ……。
dodox86

2019/10/10 01:17

インフラ界の人ではないです。。。が、RPAには興味を持っていましたのでご質問を注視していました。本回答も含め、今後起こるかもしれない問題の解決の一助にでもなれば、とコメントさせてもらった次第です。外している場合もあるかと思いますので参考程度にしてください。 キーボードから文字を入力する場合、例えば"ス"のローマ字入力であれば人間は'S', 'U', と2回打鍵します。IMEがONの時、SキーとUキーの打鍵をキーコードでWindows内で処理するときにIMEを経由し、ローマ字変換し、全角文字の"ス"になります。この"ス"はUNICODEの1文字で、テキストボックスへの入力中であれば"ス"として出力されるような流れになります。IMEがOFFなら、"SU"と2文字のUNICODE文字列です。コピペはキーボードを経由せず、別のルート(WM_hogehoge系のWindowsメッセージ)でWindowsの内部文字コードであるUNICODEの文字列のまま、テキストボックスが受信し、表示します。ルートが違いう上にIMEを経由するので、文字化けはありうるだろうな、程度のお話でした。 ちなみにシフトJISの話ですが、入力や出力が実際のファイル、HTMLなどのようなもので問題にはなりますが、今のWindowsでは日本語Windowsでもシステム内部ではシフトJISでやり取りしていないので、Windows自身ではほぼ問題にはなりません。それぞれのプログラム内の文字コードの変換処理や画面への文字表示、例えばフォントで問題になります。(結局ここで文字化けするわけですが)
dodox86

2019/10/10 01:23

よくあるSendKeyなんたらはWindows APIでキーボードの打鍵をシミュレートしていますから、キーボード入力特有の問題が起きるわけ、です。
sumire_cl

2019/10/10 03:08 編集

そういえば、BluePrismのGlobal Send Keysで半角カナの「シ」を送ると「D」になってしまうのは、おっしゃっている「IMEがOFFなら…」の道筋を行っているから、ということですね。 UiPathで同じように文字列を送るときに「入力をシミュレート」という設定があるのですが、これは 「Windows Messageやキー入力のエミュレーションを使用せず、操作対象に対してキー入力のイベントを直接送信する」 という振舞いになるそうなのですが、そこの「キーボードの打鍵」を経由しない、ということになるのですね。
dodox86

2019/10/10 02:05

> BluePrismのGlobal Send Keysで半角カナの「シ」を送ると「D」になってしまうのは、おっしゃっている「IMEがOFFなら…」の道筋を行っているから、ということですね そうだと思います。日本語キーボードですとDと半角カタカナの"シ"の位置が同じなので。キーコードがIMEを経由していないのでしょうね。 > UiPathで同じように文字列を送るときに「入力をシュミレート」という設定があるのですが、これは >「Windows Messageやキー入力のエミュレーションをシヨウセズ、操作対象に対してキー入力のイベントを直接送信する」という振舞いになるそうなのですが、そこの「キーボードの打鍵」を経由しない、ということになるのですね。 UiPathにはそんな項目があるのですね。(インストールしたことはあるがそんなに深く触ってはいなかった>自分) 詳細は分かりかねますが、キーボード打鍵の振る舞いをイイ感じでシミュレートするモードと、より直接的な打鍵のモードで操作対象を触る、いずれかの選択で、問題を回避することができるケースはあると思います。
sumire_cl

2019/10/11 03:50

UiPath公式の人が概念図を出してくれました。https://twitter.com/UiPathJapan_TS/status/1181827203136253953?s=09 この図の赤い矢印の道筋をBluePrismでやる方法を探したらいいのかなあという気がします。 どっちも.NETなのだから、あちらでできてこちらでできないということはないだろうとは思うのですが…勉強します…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問