文系・非エンジニアのRPA日記

友達から頼まれたことがきっかけでRPAに取り組むことになり、なんだかはまってしまった人のブログです。調べたけどよくわかんなくて何とか解決できた内容を載せています。ほかにちゃんとした説明があったり、間違っているとかおかしいこと書いてたらすみません。

UiPath Orchestratorを使ってみた(初心者向け)

前置き

この記事はUiPathを触っている初心者の方向けです。素人が書いてますので、その同レベルの文系の人とか向けで、エンジニアガチ勢の方には向きません。悪しからず。

ちなみに、UiPathをPCに入れてちょっと動かしていて、Orchestratorって何??みたいなレベルにある人向けです。UiPathをインストールして触ったことがあることを前提としています。

 

さて

UiPathアカデミーの上級編(Level 2 - Orchestrator 2016.2 トレーニング)が修了しました。

既にUiPathアカデミーで学んでいらっしゃる方はもうご存知かと思いますが

「動画見てるだけだとさっぱりわかんね…(。´・ω・`。)ショボーン」

 

なのでもう触ってみるしかないわけですが

これまたアカデミーが不案内&不便すぎて最初に案内されるURLは既にページが無いし…

(2019年7月現在 https://lts-platform.uipath.com/ はサーバーエラーでアクセスできません)

動画の字幕はずれてるし…

 

(゚Д゚)ゴルァ!

と思うわけです。

でもしゃあない、とりあえず無償で使わせてもらってるし・・・(ほんと開発した人たちはすごいなと思ってますし、教材を作ってくださった方々にも感謝しています。)

 

まずはOrchestratorの正しいURLに

https://demo.uipath.com/

とりあえずここにアクセスします。

で、何でもいいのでアカウントを作ってログインします。

こんな画面が出てきたらとりあえず成功です。

f:id:Harryike:20190709224610p:plain

 

んで、ここまではいいんですけど次がわからない。

どこからどう行けばアカデミーの動画でやってるような画面に飛べるのかがさっぱりわからない。

そもそも左のメニューと、動画のメニューは違うし、どうなってんの??

と思い、しばらく放置していました。というか、もうあきらめようかなと。

 

でも、「UiPathを教えてほしい」と頼んできた友達の顔が浮かび、なんとなく触っているとようやくわかりました。

 

左のメニュー>SERVICESにアクセスすると・・・

Nameの欄が、なんと青く光っているではありませんか・・・!

(名前バレしちゃいますけどどうせ後で動画も載せるので本名までわかるのでもういいんです)

f:id:Harryike:20190709225258p:plain

 

この青字を(恐る恐る)クリックしてみると

f:id:Harryike:20190709225522p:plain

キタ―――(゚∀゚)―――― !!

 

これだったんだ・・・と。

何もしてないのに、このページに来ただけで達成感得られます。

ちなみに最初にアクセスすると上の画像みたいにカラフルな感じではないと思います。わりとしーんとした感じかと。それはそれでいいんです。

まぁ、最初からこのURLに飛べばいいという話かもしれませんが。

platform.uipath.com

 

 

ここまで来たら、ある程度の設定はこちらの方のブログが詳しいのでぜひご参照ください。

ほかにも載せておきます。

【UiPath】Orchestratorことはじめ

https://qiita.com/irohamaru/items/a2bbfb4e647f2cb9146b

UiPath Orchestrator とロボットを接続 

https://techinfo-ilsole.com/connecting-robots-with-uipath-orchestrator/

 

Orchestratorの設定でつまずいたところ「保留中」「ドメイン名\ユーザ名」

ブログを参考にほいほいと設定して、実際にロボットを遠隔操作する(ジョブの実行)ところまで行きました。

しかし、、、

「保留中」でステータスが止まったまま

これはおかしい。。

ダッシュボード>ロボットでステータスを見てもオールグリーン。

UiPath Robotの設定も間違っていません(じゃないと、グリーンにならない)

なんど実行ボタンを試してもダメなので、これはおかしいといろいろ検索してみました。

当初の設定は「ユーザー名」のみを入れていました。

で、やはり同じ問題で詰まってる方がいらっしゃって

https://forum.uipath.com/t/orchestrator/113229

こちらですね。

僕の場合は

DESKTOP-マシン名\ユーザー名

で行けました。

大切な事なのでもう一度。

DESKTOP-マシン名\ユーザー名

ん?

真ん中の線って・・・\(バックスラッシュ)

なんですね。

みなさま、普通のスラッシュ(/)とお間違えのないように。

(実は僕は間違ってました。その辺が素人です)

 

動かすとこんな感じ(Orchestratorデモ、アセット利用)

2台のPCに入れたロボットをOrchestratorから遠隔操作して、テキスト入力をさせてみました。

前半は同じ文章『吾輩は猫である』です。

後半は、2台のPC別々に違う文章を入力させています(左が『吾輩は猫である』、右が『坊ちゃん』)。

夏目漱石も、ロボットが自分の小説を打ち込むなんて想像もしなかったでしょう)

 


【解説付きUipathデモ】Orchestratorによる2台PCロボット遠隔操作&テキスト入力 ※音声なし

 

プロセスとアセット利用

プロセスの中身はこんな感じです。

f:id:Harryike:20190709232231p:plain


変数AssetValueは、Orchestrator側でこんな感じに設定されています。

f:id:Harryike:20190709232030p:plain

 

ちなみに、最初にテキストファイルを読み込むアクティビティを無効化していますが、これはOrchestratorではうまく行きませんでした。別のPCにも同じようにファイルを用意したのですが、パス名がうまく設定できなくて結局あきらめました。Orchestratorでファイルの読み込みをさせようと思ったら、次回の記事で取り扱う予定のキューとかトランザクションを使わないといけないんだろうな、と(違うかもしれません)。

 

で、Orchestratorでは同じプロセスでも別々のデータを取り扱うことができて、それが「アセット」の活用です。

アセットをロボットごとに設定しているので、別の文章を入力させることができるわけですね。

f:id:Harryike:20190709232844p:plain

 

以上、何かのお役に立てれば幸いです。

 

 

【UiPathメモ】メールを受信したら次のアクティビティを実行させる

地方の中規模企業で「RPA推進担当」になった友達から

「色々な理由で会社のPCにUiPath入れられないから、
 会社のPCから家のPCにメールして
 受信したら自動処理して結果をメールで戻したい」

というリクエストを受けました。

こっちはUiPath初心者なのに無茶ぶりしてくんなーと思いつつ

相談されたから色々検討してみました。

(ちなみに、僕がUiPathを始めたきっかけになった友達とはまた別です)

 

やりたいこと:「メールを受信したらメッセージを表示させる」(メール取得をトリガー(きっかけ)にして次のアクティビティを開始する)

やりたかったことは

新着メールを受信

→ それをきっかけにして次に設定したアクティビティを実行(ここではメッセージを表示)

です。

友達がやりたいのは

会社から自宅PCにメールを送る

自宅PCでUiPathをスタンバイしておく

メールが来たら自動処理を実行する

自動処理したファイルを会社PCにメールで送り返す

ということです。

彼がやりたいことは詳細にはわからないので、僕はとりあえず「受信したら実行!」が成功すれば良いなと思い、メッセージ表示にしています。

なお、ここではメールをOutlookにしています。

 

結論

f:id:Harryike:20190622172045p:plain

全体フローチャート

f:id:Harryike:20190622172529p:plain

新着メッセージを取得

f:id:Harryike:20190622172643p:plain

メールを受信するまで待機

f:id:Harryike:20190622172904p:plain

表示メッセージ

f:id:Harryike:20190622171111p:plain

成功!

実行動画

youtu.be

 


やったこと

英語版UiPathの下記ページにアクセスし、サンプルをダウンロード

 

Email Automation. Mail Trigger Sample.

https://www.uipath.com/kb-articles/email-automation-mail-trigger-sample

 

① Mail_Trigger_Sample.xaml

② Process_Email.xaml

両方ともダウンロードします。

 

①のファイルを編集

【新着メッセージを1通取得シーケンス】

サンプルではGmailですがここではOutolookに変えています(そっちの方が簡単だから)。

画像では変数も名前を少し変えましたが、必ずしも変える必要はないです。

一点だけ、IMAPでメール送信するアクティビティを削除する場合、出力の変数をコピーして入れ替えたアクティビティの出力変数に貼り付けておきます。

 

【1分間待機シーケンス】

プロパティを変えて待機時間を変更することができます。

テストする時は、15秒~30秒くらいでもいいかもしれません。

自宅で待機させるときは、どれくらいがいいんでしょうね・・・頻度によるかも。

 

【メッセージを表示シーケンス】

Condition(条件)欄

mailMessage.Subject.Contains("keyword")

mailMessage.Subject.Contains("テスト")

に変える。

ここでは「テスト」にしています。

 

Process_Email.xaml

Body

好きなテキストに変えます。

ここでは

"メールを受信しました!(このメッセージは新着メールを受信した際に自動で表示されます)"

にしています。

 

プロジェクト実行後、新着メールを受信して、件名に「テスト」が含まれていれば、このメッセージが表示されます。

そして、新着メールがない、または新着があっても「テスト」が含まれていなければ、プロジェクトは待機したままになります。

実行後、Outlookにメールを送って、新着受信するとメッセージが表示されました(これも達成感半端なかった)

 

解説

色々検索してみたのですが、ほんとにさっぱりでした(はぁーさっぱりさっぱり)。

なんせ「トリガー」っていう言葉に騙されて

「アクティビティを監視」

「ファイル変更トリガー」

ばかりに気を取られていたわけです。

それで、いやーこれできないんじゃねーと思っていました。

もしかして、そんなニーズってないんじゃない? 

あいつのニーズ特殊なんじゃない?

とか思ってあきらめかけていました。

 

で、日本語の記事を探していても、らちがあかんなと思って英語で検索してみたら備後、いや、ビンゴでした。

しかも本家のUiPathサイトにあるし・・・なんで日本語引っ掛からなかったんだろう。いや、もしかして検索の仕方によってはあるのかも。

前の記事にも書いていますが、僕は素人ですのでこちらもご参考までお願いします。

 

【UiPathメモ】これがほんとの(?)「ファイル名だけ取得」(初心者の方へ)

こんにちは。

ふとしたきっかけからRPA(ロボットによる業務自動化=Robotics Process Automation)を趣味で始めることになった、文系・非エンジニアのハリーです。

使用しているのはUiPathです。もちろん初心者です。

 

このブログでは、僕と同じように検索でわからないことを調べる方のために、そして、僕のメモのために更新していきたいと思います。

UiPathの基本的な使い方を知りたい方や、そもそも何それ? という方は、スルーしていただくか、他の記事をご参照ください。

 

やりたいこと:「ファイル名だけ、しかもExcelのだけを取得」

第一回目は、僕がどれだけ検索してもよくわからなかった「ファイル名だけ取得」です。

やりたいことは、単純に

「特定のフォルダにあるファイルの、ファイル名(ここではExcelファイルだけ)を取得して

それをメッセージボックスに表示する」

です。

 

結論

f:id:Harryike:20190621232219p:plain

Activity

f:id:Harryike:20190621232509p:plain

実行結果

 

やったこと

アクティビティから

 

1 「繰り返し(コレクションの各要素)」を配置

 

2 要素欄: itemはそのまま

 

3 コレクション欄

 Directory.GetFiles("パス名","*.xlsx")

 

4 本体に「メッセージボックス」を配置

 

5 メッセージボックス欄

  Path.GetFileName(item.ToString)

 

※ 変数・プロパティの設定は特に無し

 

解説

たったこれだけのことだったのですが、よく理解していない僕はなかなかわからず、検索しても「パス名取得(フルパス)」はあるけど、「ファイル名だけ(しかも特定ファイル名だけ)」は出て来ず、苦労しました。

 

色々な方の記事を組み合わせて、こうかな? こうかな? と繰り返していくうちにようやくたどり着きました。

ポイントは

Directory.GetFiles("パス名")だけでやると余計なものがくっついたりうまく表示されない。

Path.GetFileName("パス名")だけでは、Excelファイル(しかもワイルドカード使用)が指定できない。

したがって、2つをうまく組み合わせて

Directory.GetFiles("パス名", "*.xlsx")で「このフォルダにある、Excelファイルが欲しいのよ」と伝えます。

また、この時「繰り返し」の機能でitemは変数となります(これができるまで、実はよくわかってなかった…)。

なので、次のメッセージボックスでitemをそのまま利用して

Path.GetFileName(item.ToString)

 と、文字列に変換してメッセージに出力しています。

 

経緯

これがやりたかったのは、Excelファイルを自動で加工した後に、そのファイル名を使って自動メール送信をしようとしたら上手くいかなくて・・・

結局1日越しで、色々やってみてたどり着きました。

不思議と、これという答えを書いている記事がなくて、素人の僕が書きました。

もしかしたらおかしいことを言っているのかもしれません。

なので、ご参考程度にお願いします。

ちなみに、できたときは達成感半端なかったです!