LoginSignup
3
2

More than 3 years have passed since last update.

[UiPath]ビンゴゲーム用抽選シナリオをつくりたかった

Last updated at Posted at 2019-07-03

remark

自身のblogにも同じ内容をポストしています。


ビンゴゲーム用抽選シナリオをつくりたかった

私の会社ではRPAビジネスに参画している社員が相当数いるのだが、そのメンバー向けにコミュニケーションイベントをやることになった。
ただイベントをやるだけではつまらないので、アクティビティとしてビンゴをやることになったのだが、そこもただビンゴをやるだけではつまらないということで、UiPathでビンゴを作れば面白いよね、となって、作ることになった。

シナリオの条件

  • インプットは、「社員No.」「氏名」が含まれたExcelファイル
  • インプットからランダムにレコードを抽選する
  • 社員検索(イントラ)から、抽選された社員のページを表示する
  • 誰が選ばれたのかを確認できるようにする
  • ビンゴとなったメンバーが一定数出た段階で止められるようにする

作ってみた

(シナリオは後日公開したいかも……)

公開しました。
https://github.com/riscurred/uipath_akbingo

公開のために、実際の中身からだいぶ変えた。肝のところは変えてないので許して。あと中のデータがなんでコレなのかというと、とりあえず使いやすそうだった(そして実際に使いやすかった)のと、ちょうど◎◎BINGOって番組やってたよなーというアレ。

工夫

ランダムにレコードを抽選する

UiPathには、DataTableの中からランダムにレコードを選択するようなアクティビティがないので、

  • DataTableのレコード数を上限として、ランダムに番号を払い出す
  • DataTableから、払い出されたランダムな番号の位置にある行レコード(DataRow)を抽出する
  • 抽出した行は繰り返し抽選されないよう、DataTableから削除する

というロジックで組むことにした。

ランダムに番号を払い出す

new Random().Next(maxValue)を用いると、0maxValueの間でランダムな数字を払い出すことが出来る。
もし下限値を0以外にしたい場合は、new Random().Next(minValue, maxValue)とすると、minValuemaxValueの間でランダムな数字を払い出してくれる。

行レコードを抽出する

これはDataTable操作の基本だけど、dt.Rows(rowNumber)で、rowNumberの位置にある行レコードを抽出できる。この結果はDataRow型となる。
抽出した行データをdrとしたとき、dr.Item(columnName)dr(columnName)とすると、その行レコードに含まれる対象列のデータを抽出できる。
このあたりは@UmegayaRollcakeさんの記事が結構詳しいと思うので、参照されたい。

抽出した行をDataTableから削除する

ここは、Remove Data Rowアクティビティを使える。
先ほど抽出したDataRow型の変数(drとする)と、対象となるDataTableを引数として指定すると、DataTableからdrのレコードを削除してくれる。
最初はFilter Data Tableアクティビティを使って作ってたんだけど、フィルターの設定が上手く動いてくれなかったので、このアプローチにした。

字幕アクティビティを使う

標準では含まれていないけど、画面にパネルや字幕を表示するアクティビティパッケージが公開されている。これを導入することで、例えばデモ動画などの解説用メッセージを表示するなどに使える。
アクティビティパッケージの導入については割愛。時間があれば追記します。

誰が選ばれたのかを確認できるようにする

これは、社内で利用しているチャットツールであるChatworkに投稿することにした。
手順はこちらにあるので、気になる方は参照されたい。いつか自分でも手順書いてみたい。
ちなみに公開したシナリオからは削除した。邪魔だったんで……。

結果

実はまだ本番を迎えていないので、本番で無事に動くことを祈る……

無事に動いた!よかった、よかった……!!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2