PowerAutomateでズンドコキヨシをやってみた

Power AutomateのAdvent Calendar用に、ズンドコキヨシをやってみました。
有名らしいのですが、最近初めて知りました　＞　ズンドコキヨシ

# 全体像
1．Power Appsのボタンを押す
2．Power Automateでランダム数値を発生させて、なんかいろいろ条件分岐する
3．Power Appsのラベルにいまのズンドコ状況を出力する
4．「ずん・ずん・ずん・ずんどこ」がそろったら「き・よ・し！」とPower Appsに表示する
5．そろわなかったら「ずん・ずん・ずん・ずん・ずん　失敗」と出力

#PowerAutomate
PowerAppsのラベルを取得して、ズンドコ状況と「き・よ・し」を返却します。

## 1．Power Appsから値を取得する
スタートは、テンプレートにある「Power Appsボタン」を選択して、
PowerAppsから値を取得します。
「変数を初期化」を選び、「PowerAppsで取得」を選ぶと、自動的に変数が追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/d59034b5-ce11-8f7a-8926-c6fa9ae3c9db.png)

## 2．「ずん」「どこ」切り替える用の変数を追加する
ランダムな変数がほしいので`rand(1,10)`をとりあえず追加します。
これは1～10の間の整数を取得してくれるものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/c63b2b81-0551-ea86-824c-b88e26ac7a5a.png)

## 3．今のずんどこが失敗してたら初期化する
失敗したかどうかは`indexof関数`で「今のずんどこ」に「失敗」という文字列があるか取得します。
0より大きければ存在するので空白で初期化します。
空文字指定のやり方がわからなかったので、半角空白を設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/7ce1acaf-92e0-015f-08de-ac37dc9e4195.png)

## 4．次が「ずん」なのか「どこ」なのかで分岐する
2で取得したランダムな数値を`mod関数`で2で割って余りが1だったら「どこ」にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/dbdcc86a-0956-c064-c07f-b980929498c3.png)

## 5．「どこ」ルートを作る
「どこ」は1回しかでてこないので、
「今のずんどこ」が「ずん・ずん・ずん・ずん」であるかどうか確認します。
文字数が11文字かどうか`length関数`を使用して確認しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/347ff3f6-e8a8-01d1-9f4a-5f84cd80915d.png)

ずんどこきよしが出来ていたら、
zundoko変数に「ずん・ずん・ずん・ずんどこ」、kiyoshi変数に「き・よ・し！」と応答します。
できていなかったら
zundoko変数に`concat(「今のずんどこ」, 'どこ 失敗')`、kiyoshi変数は半角空白を応答します。

## 6．「ずん」ルートを作る
「ずん・ずん・ずん・ずん」のあとに「ずん」が出てきたらエラーなので、
そこで判断して、「ずん・ずん・ずん・ずん」のときは
zundoko変数に`concat(「今のずんどこ」, '・ずん 失敗')`、kiyoshi変数は半角空白を応答します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/86e5c800-84ea-17d0-c547-f11f4ce95a0b.png)

そうじゃないときはとりあえず続けて問題ないのですが、
「•」を出すか出さないか判断するので、最初の「ずん」かどうかを判定して、
最初の「ずん」であれば
zundoko変数に`concat(「今のずんどこ」, 'ずん')`、kiyoshi変数は半角空白を、
zundoko変数に`concat(「今のずんどこ」, '・ずん')`、kiyoshi変数は半角空白を応答します。

PowerAutomate側は以上です。
（今気づいたけど、ズンドコキヨシが成功したときの初期化の検討が漏れてるな・・・）

# PowerApps
Power AppsとPower Automateの連携はこちらの動画を参考にさせていただきました
[はじめてのPowerApps 第8回](https://www.youtube.com/watch?v=TD8d9mPrC4k)

とりあえずボタンをおきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/f6c45826-318c-8af3-2952-d3652a74c0c0.png)

あと「今のずんどこ」を表示する用のラベルと、「きよし」を表示する用のラベルもおきます。

ボタンを選択して「アクション」の「PowerAutomate」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/83f80d8b-ade6-0dde-55e1-30213ed86970.png)

さっき選んだPowerAutomateが出てくるので、選択します。
選んだら「PowerAppsボタン.Run」がでてきます。
このRunの引数は、PowerAutomateの1で選んだ変数の数だけ引数が指定できるようになるようですので、
「今のずんどこ」であるLabel1.Textを指定します。
あと、応答を取得する用の変数ZundokoにSetします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/dc17901a-ae49-1d43-49ea-0cea3aebfccb.png)

「今のずんどこ」のラベルのTextに`Zundoko.zundoko`、「きよし」に`Zundoko.kiyoshi`を設定。

これで完成です！！！

### 12/20 10:50追記
最初の1回目にLabel1.Textが取得できないでエラーになってしまうので、
`If(IsBlank(Label1.Text), "", Label1.Text)`こういうIf文を追加しました。


# やってみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/7929b0db-0afc-68f2-47a6-04dabc6ddf64.png)

ずんどこ失敗、ずんどこ失敗、どこ失敗・・・


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895455/b3fd1f99-d1f1-3287-edb4-b85247a0d94f.png)
できた！！！