このページの本文へ

FIXER cloud.config Tech Blog

毎朝席替えしてくれるbotをPower Automateとローコードで作る

2022年01月28日 11時00分更新

文● 加藤 奨一/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事は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”にするのがポイント。

1人目の席決めは簡単 

手順3:2人目の席を決める

 2人目の席の決め方は、「1~4の中からランダムに選んだ時に1人目の数字と被らなければ良い」と考えます。

 ここでは「条件」→「Do until」を使います。「Do until」は上段が条件、下段は動作となり、上段の条件を満たすまで、下段の動作を繰り返してくれます。

 そのため、今回は上段は「seat_Aはseat_Bと等しくない」、下段は「seat_Bに1~4の中からランダムに数字を選ぶ」動作(作り方②と同じ)を入れることで、seat_B が seat_Aと重複しないように数字を設定できます。

ここで「Do until」を使い始めます

 これで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企業に飛び込んだ、元旅行の営業マンです。

[転載元]
 毎朝席替えしてくれるbotを Power Automateだけで無理やり作る

カテゴリートップへ