PowerAutomate を使ってみよう（無料版で使えるサンプルフロー付き）③

## 初めに
執筆している一連の記事（「PowerAutomate を使ってみよう（無料版で使えるサンプルフロー付き）」）では、Office 365のアカウントを持っていると使用できる、Power Automateの無料版を使用して、初心者向けに作成できるフローと、それを作成するにあたっての注意点をまとめています。

Power Automateを使ってみたい方のお力になれましたら幸いです。

今回の記事では、前回までに作成した処理の分岐処理を作成していきます。
    [PowerAutomate を使ってみよう（無料版で使えるサンプルフロー付き）①](https://qiita.com/kodai_t/items/e320499ba7a78f41313c)、[PowerAutomate を使ってみよう（無料版で使えるサンプルフロー付き）②](https://qiita.com/kodai_t/private/fae921bf5599baf701b2)で作成した処理の続きとして作成していきますので、合わせてそちらもご確認ください。

注意点やポイントなど、前回までに触れている物に関しては、省略いたしますので、その点はご了承ください。


※
前回に引き続き、以下のキャプチャのテスト用テーブルを使用しています。
記事と同じ処理を作成する場合はこちらと同じテーブルを作成して挑戦してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/7b13befe-eaa1-d5ea-281a-418b69a4b325.png)


### おさらい
「PowerAutomate を使ってみよう（無料版で使えるサンプルフロー付き）」の一連で作成していくフローの全体像をおさらいしていきます。

作成していくサンプルフローは、エクセルに入れたタスクを特定のメンバーにリマインドとして送信するものです。
送り主が複数いる場合などに便利になる想定で作成しいます。


【全体図概要】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/49ab3aa5-097b-2839-7da2-54b6d2ef15b7.png)


作成していく部分は画像内の「Power Automate（自動化される範囲）」の具体的な処理になります。

### 今回作成する処理

前回までは Excelからテーブルを取込み、後程の分岐処理で扱いやすいようにデータ型を整えるところまでを行いました。

今回は、以下のような分岐処理をつくっていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/59ad6658-4d76-551a-6724-fecd2be6520e.png)

こちらの処理をPower Automate で表記するとこちらのようになります。


実際にやっていることとしては、簡単なIF構文を使用しているだけですね。プログラミング言語などに少し触れたことがある方は理解しやすいかと思います。

## 処理の作成
### アクションの説明
先ほどのキャプチャで使用している重要なアクションについて説明しておきます。

・**「Apply to each」**
ループ処理を行う時に使用します。今回の処理はテーブルのすべての行を検索し、フラグ＝「１」の行を選択したいのですが、**「すべての」**を表現するために使用しています。
こちらのアクションが無い場合、テーブルの最初の1行のみが検索対象となります。

・**「変数の設定」**
次のアクションである「条件」で使用するために設定しています。
今回作成する処理では、「フラグが「１」の場合」など、テーブル内の「flg」によって処理が変わります。Power Automateでは、「flg を変数として使います！」と宣言してあげないと、どのテーブルにある「flg」を探せばいいかわからなくなるんです。
なのでここでは、「PowerAutomate を使ってみよう（無料版で使えるサンプルフロー付き）②」で作成した「文字型に変形したテーブルの「flg」」と指定しています。

・**「条件」**
名前の通り、「flg」が「１」の時と、それ以外の場合で後の処理を分けるために使用しております。（プログラミング言語的に IF に当たる部分です）

それでは、それぞれのアクションを追加して実際にこちらの処理を作成していきましょう。

### 「Apply to each」の作成
「アクションを追加する」→コントロール→「それぞれに適用する」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/9fc77b33-f563-49a7-bdea-5b6a0cdc03e8.png)

成功すると、以下のようなアクションが追加されているかと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/9278ec29-ce1c-f255-7f27-0dad16627bed.png)

ここには、一番元となっている出力を入れます。この場合、文字型を変換する前の Excelとなるので、こちらになります。「value」は「表内に存在する行を一覧表示」にある全データと今はとらえていただければOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/4ec2735f-3bba-adf3-5baa-501f925c4280.png)

### 変数の設定
アクションの説明で少しお話しした変数を設定します。
アクションの追加から、「変数の設定」を選択します。（検索ボックスに「変数」と入れると出てきます）

データ型を変換した表の内、今回の処理で使用するのは「flg」の列のため、キャプチャのように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/54c152c7-455c-79b9-30c2-92cb9a179dff.png)

### 条件の設定
処理の分岐条件である、「flgが１に等しい」を設定していきます。

一つ前で設定した「表」（flg）が「１」と等しいとして設定してあげればよいので、このように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/dd6b7378-75ca-01a6-226c-27c7161b8c04.png)

「次の値に等しい」の右側に式が入っておりますが、式を使用して、文字型の１を指定しています。
空欄をクリックすると出てくるボックスのこちらの部分に以下の式を入れています。

string(1)

（式を入れたら「OK」を押下して適用します）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/1a502fef-6e7a-7d04-5454-f3bb6d910b5e.png)

**条件自体はこちらでOKなのですが、このまま処理を実装すると、問題が発生するんです！**
投稿者もここでかなり苦戦しました

原因はテーブルにある空白行にあります。

空白行に対して何も条件を設定してあげないと、ループ処理で空白行を永遠に探し続けてしまい、エラーが発生してしまうのです、、

なので、条件に「空白ではない」を設定してあげなければいけません、、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/c74715b7-fbc6-1cd3-5792-85773a646ee1.png)

**（左のボックス）**
式に以下を入れています
empty(variables('テーブル'))　　→「テーブル」の中の空白行

**（中央のボックス）**
「次の値に等しくない」

**（右のボックス）**
true  （直接入れています）

この2つの条件を両方適用するので、ANDでつなげると、次のキャプチャのようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/27c8ff27-e349-2ef6-31cc-52a71bbf2525.png)

ここまで設定できたら、条件分岐の「はい」を作成していきます。
もう少しで完成なので、あと少し頑張りましょう！


### 行の更新
抽出した行の flg　を更新する処理を付け加えます。次に新しいタスクを追加した時に、通知済みのタスクを再通知しないようにするためのちょっとした工夫ですね。

条件に合う行の更新をしたいので、条件分岐後の「はい」の中に処理を作成していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/462ea8ec-b5b3-c818-b0b9-3ae76874e351.png)

ここに新しく、「行の更新」アクションを追加していきます。
追加できると、こちらのようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/547fd291-0c81-c25c-73bf-ee40fe489652.png)

場所、ドキュメントライブラリ、ファイル、テーブルは、「表内に存在する行を一覧表示」で設定したものを入れます。（値を変更するテーブルを選択）

キー列に「ID」、キー値にも「ID」を設定します。
これらは一意である（表の中で唯一の値である）必要があります。

キーとは、データベースを触っている方にはなじみがある概念かと思いますが、ここで初めて知った方向けにかみ砕いて説明すると、行の住所と考えていただくと良いかなと思います。ループ処理の中でPower Automateが更新する行を迷わないために設定するものになります。

最後に、更新する列（今回は flg）に更新する値を入れます。
上記をすべて入れると、次のキャプチャのようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/d401577a-82db-d316-a12a-bbce20e4dd4c.png)

これで、通知済みのタスクが処理を実行するたびに通知されなくなりました！


### Teamsに通知を送る
「チャットまたはチャンネルでメッセージを投稿する」アクションを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/92e53e2b-a552-d23c-b8b8-354b02201bab.png)

変数の説明を少ししますね、

（**投稿者**）
誰が投稿するかを設定できます。
ボットに投稿してもらう、ユーザーが送信したことにするなど設定できます。

（**投稿先**）
文字通り、メッセージの投稿先を指定できます。
ここで選択した内容によって、 その下の変数が変わってきます。
今回は、グループチャットに投稿する想定なので、ドロップダウンからメッセージを送りたいグループチャットを選択します。


（**Message**)
投稿内容を設定できます。Power Automate を使うメリットとしては、この内容に変数を設定できることです。

こんな感じですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528859/7680cf7a-081c-60eb-4fe3-4f5222b6836f.png)

これで、作成したい処理は完成です！
右上の「テスト」から処理が正常に動くか確認してみましょう！


## まとめ
全3回に分けて Power Automateで簡単な通知処理を作成していきました。ほとんどは直感で作成できるものではなかったでしょうか？
１からプログラムを作らなくても、自動処理を作成できる Power Automateってすごいなと改めて思いました。

今回のポイントだけ抑えていただくと、ご自身で別の処理を作るときに参考になるかと思うので、まとめておきます。

### ポイント
・ループ処理の際は、空白行も考慮しなければいけない
・ループ処理で更新処理（もしくは参照）したい場合には、テーブルの行ごとに一意の値が必要

今回完成した処理は、出力先を変えるだけで、メールで通知を行う、トリガーをテーブルに値が新規で入った時にするなど、記事を読んでいただいた方のお好きなようにカスタムできます。
是非、いろいろと試行錯誤して、「こんなこともできるよ！」「ここはこうすればもっといいのでは？」など意見がございましたら、私にも共有してください！

投稿者も勉強中ですので、一緒に勉強していきましょう！

## 最後に
株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください：
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area