計算カードアプリ 連番と乱数をコレクションにセットするには
先日Twitterに投稿をさせて頂きました Power Apps の「計算カードアプリ」ですが、色々な方から作り方について質問を頂きましたので、少し紹介をしたいと思います。
今回紹介させて頂くのは、連番と乱数がセットされたコレクションの作り方です。このアプリに表示される計算カードの数字は乱数で作成しているのですが、Power Apps の関数を組合わせれば、下図のようなコレクションを1回のボタンアクションで作成することが出来ます。
アプリでは、TOPメニューのボタンを押したタイミングでコレクションが作成されるように設定しています。
まずは乱数の作り方からみてきましょう。今回は1から10の間のいずれかの数字が取得出来るようにしたいと思いますので、使用する関数は「RandBetween関数」です。この関数のカッコの中に最小値と最大値をセットすれば、その間の数値が整数で返ってきます。例えばRandBetween(1,3)とセットすれば、1から3のいずれからの数値がランダムに選択されて返ってきます。
それではRandBetween関数を使ってコレクションを作成していきます。コレクションはCollectで作成出来ます。コレクション名はCardとしておきます。ここにNumbers1、Numbers2の2つの列を設定し、RandBetween(1,10)で1から10の間の整数がセットされるようにします。
このCollectの処理を問題の数だけ繰り返します。処理を繰り返すにはForAllを使用します。カッコの最初にSequenceをセットすると処理回数が設定出来ます。下図の設定では10回処理が繰り返されますので、作成される問題は10問です。
最期に問題番号をセットします。問題番号は連番でセットをするのですが、その連番を作成するためにCountRowsという関数を使用します。この関数を使うとコレクションのデータ総数を受取ることが出来ます。今回はForAllの処理を流すことで、1件ずつデータが追加されると同時に、件数をカウントしますので、結果として連番がセットされることになるわけです。
最初のデータの連番を1とするには、予めCountRowsに+1をセットしておきます。
今回の内容を下記に記載しますので、ボタンのプロパティ「OnSelect」等に張り付けて動作を確認してみて下さい。
ForAll(Sequence(10),
Collect(Card,{
No:CountRows(Card)+1,
Numbers1:RandBetween(1,10),
Numbers2:RandBetween(1,10)
}
)
);
次回はSVGで作成する〇のアニメーションの作り方について紹介させて頂こうかなと思います。