本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「毎朝席替えしてくれるbotを Power Automateだけで無理やり作る」を再編集したものです。
この記事はFIXER Advent Calendar 2021 22日目の記事です。
私はFIXERの中で、営業・企画の担当をしていて、8人のメンバーと共に仕事をしています。初めは各々決まった席で仕事をしていたのですが、「日替わりで席替えした方が面白いかも!」となり、毎日Slackでみんなの席を教えてくれるbotを、Power Automateだけで作ってみました!
正直、Sharepointなどと連携すれば、もっとスマートな方法があるはずなので、①少人数 かつ ②とにかく同じものをそのまま作りたい人、のみ参考にしてください!
手順1:スケジュール+変数を作る
今回は4人のメンバーがいて、そのメンバーに1~4の番号をランダムで振ることで席を指定します(8人だと大変なので……)。
まずはPower Automateのトリガーとして、「スケジュール済みクラウドフロー」で平日毎朝9時に起動するように設定。
この時、あえて繰り返し間隔を「日」ではなく、「週」を選択すると、ワンタッチで平日のみ起動するように設定できるので、楽できます。
そのあと、4人分の変数を「変数」→「変数を初期化する」を使い、設定していきます。
変数の名前は seat_A~seat_Dで設定。種類は「整数」を選択します。
手順2:1人目の席を決める
ではさっそく席決めをしていきます。
1人目は簡単です。ランダムに1~4の中から数字を選んでもらいます。
「変数」→「変数の設定」を使い、seat_Aを選んだうえで、下記を入力します。
int(rand(1,5))
この時、”rand(a,b)” の時、a以上b未満の整数になるので、1~4で設定したい時は”5”にするのがポイント。
手順3:2人目の席を決める
2人目の席の決め方は、「1~4の中からランダムに選んだ時に1人目の数字と被らなければ良い」と考えます。
ここでは「条件」→「Do until」を使います。「Do until」は上段が条件、下段は動作となり、上段の条件を満たすまで、下段の動作を繰り返してくれます。
そのため、今回は上段は「seat_Aはseat_Bと等しくない」、下段は「seat_Bに1~4の中からランダムに数字を選ぶ」動作(作り方②と同じ)を入れることで、seat_B が seat_Aと重複しないように数字を設定できます。
これで2人目までは決定しました。ここからが勝負です。
手順4:3人目の席を決める
3人目の決め方も、 「1~4の中からランダムに選んだ時に1人目・2人目の数字と被らなければ良い」と考えます。この時「Do until」がノーコードで複数条件を設定できるできれば、嬉しいのですが生憎その機能は無く……
いろいろ考えましたが、こうすることに。
① 下段の動作は今までと同じく、 「seat_Cに1~4の中からランダムに数字を選ぶ」動作(手順2と同じ)
② 上段、条件の右側にはこのような式を入れてみました。
or(equals(variables('seat_C'),variables('seat_A')),equals(variables('seat_C'),variables('seat_B')))
“equals(a,b)” は、a・bが等しいと“True”を返してくれます(”variables”は変数)。
“or(a,b)” は、a・bのいずれかが “True”だと、”True”を返してくれる。
これにより、上段、条件の右側は、「CとA・CとB」のいずれかが等しいと“True”を返してくれるようになりました。
③ 上段左側にも“True”を入れ、真ん中の判定基準は「次の値に等しくない」を選択します。
この①→②→③により、 「CとA・CとBのいずれかが等しい、状態ではない」=「CとA・CとBがいずれも等しくない」という条件が作ることができ、重複しない席番号を選べるようになりました。
もっといい方法がありそうな気がしますが、一旦これで出来たので、ひとまず満足してます(笑)
手順5:4人目の席を決める
さて、4人目は3人目と同じです。上段、右側の条件を「DとA・DとB・DとC のいずれかが等しい、状態ではない」ことを確認するので、下記のような式を入力してみます。
or(equals(variables('seat_D'), variables('seat_A')), equals(variables('seat_D'), variables('seat_B')),equals(variables('seat_D'), variables('seat_C')))
比較対象のDと既に決まったA・B・Cをそれぞれ比較しています。
長くなりましたね。これを繰り返せば、何人でも増やせます。
増やすときは、Power Automateの中で記入すると欄が小さくて書きにくいので、私はメモ帳とかを利用して書きました。
確認:席番号をSlackで通知してみる
最後にSlackへ席番号の一覧を通知してみましょう。
無事、4人分の席番号を割り振ることができました。
まとめ
繰り返しになりますが、「たぶんもっと簡単に作れる方法があるはずです!」
ただひとまず作りたい!ってなった人が、とにかく見て作ってもらえるレシピと思って頂ければと思います。
私はカタカタ、コーディングはできない分、ローコードでできる条件や構文を考えてみました。
工夫次第でいろんなことができそうなのが、Power Automateの良いところですね。
それでは、また!
加藤 奨一/FIXER
ひょんなきっかけでIT企業に飛び込んだ、元旅行の営業マンです。