初めてRPAツールを触る方や基本的なプログラミング学習向けに、Power Automate Desktop(PAD)でカンタンなゲームを作る方法について解説しています。ご自身の環境で動作可能なフローのテンプレートも共有して説明していますので、Power Automate Desktopを使った自動化フローを作る際の参考にしてみてください。
マイクロソフトの無償RPA(自動化ツール)である「Power Automate Desktop(PAD)」で、スクレイピングした一覧表をcsvで保存する方法について解説しています。
今回は変数を使ったサンプルとして簡単なゲームができるフローを解説しています。
もともと「変数とは?PADで使える変数の種類と違いについて」にて変数の使い方のサンプルとして作ったものですが、フローのサンプルとしても参考になるのでこちらでもご紹介します。
無料自動化ツールの「Microsoft Power Automate Desktop」について、そもそもの解説や導入方法については「はじめてのPower Automate Desktop – 使い方・解説記事まとめ」からお読みいただくと基本的な使い方などが確認できます。
変数を使って文字列の操作と計算を行うサンプル
変数の操作を行うPower Automate Desktopのサンプルフローをご紹介します。
サンプルフローについて
これは、ランダムに表示される最大3桁の数字の足し算を行うPower Automate Desktopで動くゲームのサンプルフローです。
フローを実行すると、「〇〇+〇〇 = ?」というメッセージとともに入力テキストボックスが表示されます。
テキストボックスが表示されたら、その計算式(〇〇+〇〇)の答えをできるだけ早く入力してください。
テキストを入力してOKをクリック(もしくはEnterキーを押す)すると、計算結果と入力内容の判定が行われ、正解もしくは不正解のメッセージが表示されてゲームが終了(フローが終了)します。
出題される計算式は毎回異なります。
ちょっとしたゲーム要素として、答えを入力するまでの時間を変数を使って計測し、それを結果に表示していますので、答えるまでの時間を競えるようなものにしています。
表示される数値が毎回ランダムで1桁の場合もあるので難易度が毎回異なりますが、この辺りはサンプルということで大目に見てください。
サンプルフローのスクリーンショット
作成したフローのスクリーンショットです。
編注:今回のサンプルでは、ランダムな数値を取得するために「ランダムテキストの作成」アクションと「テキストを数値に変換」のアクションを使用していますが、本来ランダムな数値を取得するための「乱数の生成」というアクションが存在します。(執筆時に見落としていました。すみません。)
また、この「乱数の生成」アクションは1度に複数の乱数を作ることもできるため、今回のサンプルフローに「乱数の生成」アクションを使うことで、よりシンプルなフローを作ることも可能です。
Robin言語ソースコード
以下は今回のサンプルのRobin言語ソースコードです。
コードをコピーし、Power Automate Desktopの編集画面に張り付けると今回のフローのアクションをそのまま登録することができます。
Text.Random UseUpperCaseLetters: False UseLowerCaseLetters: False UseDigits: True UseSymbols: False MinimumLength: 3 MaximumLength: 3 RandomText=> RandomTextA
Text.ToNumber Text: RandomTextA Number=> RandomNumberA
Text.Random UseUpperCaseLetters: False UseLowerCaseLetters: False UseDigits: True UseSymbols: False MinimumLength: 3 MaximumLength: 3 RandomText=> RandomTextB
Text.ToNumber Text: RandomTextB Number=> RandomNumberB
DateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> StartDateTime
Display.InputDialog Title: $'''問題!''' Message: $'''%RandomNumberA% + %RandomNumberB% = ?''' InputType: Display.InputType.SingleLine IsTopMost: False UserInput=> UserInput ButtonPressed=> ButtonPressed
DateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> EndDateTime
SET Answer TO RandomNumberA + RandomNumberB
DateTime.Subtract FromDate: EndDateTime SubstractDate: StartDateTime TimeUnit: DateTime.DifferenceTimeUnit.Seconds TimeDifference=> TimeDifference
IF UserInput = Answer THEN
Display.ShowMessage Title: $'''おめでとうございます''' Message: $'''すばらしい!正解です!
%RandomNumberA% + %RandomNumberB% = %Answer%
経過時間は%TimeDifference%でした。''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed2
ELSE
Display.ShowMessage Title: $'''残念''' Message: $'''不正解です!残念!
%RandomNumberA% + %RandomNumberB% = %Answer%
経過時間は%TimeDifference%でした。''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed2
END
Power Automate Desktopでフロー共有する方法、共有されたコードの利用の詳細については作成したフローを他のユーザーに共有する方法でも解説しているので、併せてご参照ください。
各アクションの解説
ランダムテキストの作成
計算問題を構成する2つの数字は「ランダムテキストの作成」アクションを使って作っています。
本来このアクションはパスワードの生成などに使用されるものですが、生成する文字を数字だけにすることでランダムな数値を作ることができます。
ランダムテキストの作成はステップ1とステップ3の2か所で行っていますが、それぞれのアクションでは生成された変数を%RandomTextA%
、%RandomTextB%
と、異なる名前を付けておきます。
テキストを数値に変換
ランダムテキストの作成アクションで数値が作れる、と前項で説明しましたが、実際にこのデータを数値として使用するにはもうひとつ、「テキストを数値に変換」アクションを実行します。
こちらもランダムテキストの生成のあとに2回実行し、数値の変数を作っています。変数名はそれぞれ%RandomNumberA%
、%RundomNumberB%
とします。
現在の日付を取得します
ステップ5とステップ7では「現在の日付を取得します」アクションを使ってその時の日時を取得しています。
それぞれのアクションでは取得した日時を%StartDateTime%
、%EndDateTime%
という変数に格納します。
これにより、ステップ6でユーザーから回答が入力されるまでの間に経過した時間を計測することができます。
実際はPower Automate Desktopのシステム側の実行遅延などの影響もあるので、ミリ秒単位の計測にはずれが発生します。
入力ダイアログを表示
問題の出題とユーザーからの入力受付は「入力ダイアログを表示」アクションを使用します。
「入力ダイアログメッセージ」ボックスには%RandomNumberA% + %RandomNumberB% = ?
と入力します。
画面表示などに変数を使いたい場合、変数の%~%
をそのまま記述することで、フローを実行したときに自動的に変数の内容に置き換えられて表示されます。
変数の設定
ユーザーから答えの入力が終わったら、判定のための答えを計算して変数に格納します。
ここでは「変数の設定」アクションを使用します。
「設定(変数名)」は%Answer%
とし、「宛先(変数の値)」は%RandomNumberA + RandomNumberB%
とします。
ここで、「宛先(変数の値)」が%RandomNumberA + RandomNumberB%
となっている(%RandomNumberA% + %RandomNumberB%
ではない)ことに注目してください。
変数同士の計算を行うような場合、計算式などはすべて%~%
の内側に記述します。
これにより、%RandomNumberA%
と%RandomNumberB%の
を合計した値が%Answer%
という変数に格納されます。
日付の減算
解答までにかかった時間の計算は「日付の減算」アクションを使って行います。
If(条件)
ユーザーが入力した数字が正解かどうかを判定するには「If」アクションを使用します。
ここでは、ステップ6でユーザーが入力した内容(の変数)とステップ8で実際に計算した答え(の変数)が等しいかどうかを比較しています。
ここで2つの変数の値が等しい場合とそうでない場合で、正解、不正解のメッセージを表示するアクションへと分岐しています。
条件分岐(If)アクションの詳細については以下をご覧ください。
メッセージを表示
最後に、正解の判定結果に従ってメッセージを表示します。
ステップ11が正解メッセージ、ステップ13が不正解のメッセージとなっています。
下記が正解メッセージです。「表示するメッセージ」は以下のように入力します。
すばらしい!正解です!
%RandomNumberA% + %RandomNumberB% = %Answer%
経過時間は%TimeDifference%でした。
そしてこちらが不正解のメッセージです。「表示するメッセージ」は以下のように入力します。
不正解です!残念!
%RandomNumberA% + %RandomNumberB% = %Answer%
経過時間は%TimeDifference%でした。
以上でサンプルフローの完成です。
実際にPower Automate Desktopで動作させてみて、変数の状態の変化や計算式の記述などをチェックしてみてください。
コメント