Power Apps で日用品の購入管理アプリを作る（Power Automate 編）

(2020/01/19 更新)
手順 14 で、「SharePoint の項目の更新は、すべての列に何かしら値を入れて更新する必要がある」と記載していましたが、正しくは「"必須入力の列" は何かしら値を入れて更新する必要がある」でした。お詫びして訂正します。

#はじめに
本記事は、以下の記事で紹介した日用品の購入管理アプリの作成手順のうち、Power Automate の部分の作成手順を Power Automate 初学者向けに書き起こしたものです。
[元記事：Power Apps で日用品の購入管理アプリを作る](https://qiita.com/KodamaJn/items/2817ace2791041f4cc48)

なお、上記の記事では Power Automate でメール送信まで行っていますが、本記事は Power Automate の最低限の使い方を知ることを目的としているため、最低限の処理（残日数の減算処理）のみを紹介します。

#やりたいこと
SharePoint にある日用品-品目リストの残日数の値を 1 減算する、という処理を、毎日定期実行させます。
これを Power Automate で行う場合、例えば以下のようなアルゴリズムになるかと思います。

１. 減算するための変数を初期化する
２. SharePoint の日用品-品目リストの全データを取得する
--- 以下、品目の数だけ ３. を繰り返す ---
３. 残日数が 0 より大きいか確認する
　　0 より大きい場合：
　　　　３-１. 残日数の値を １. の変数に格納する
　　　　３-２. 変数の値を 1 減算する
　　　　３-３. 変数を用いて SharePoint のデータを更新する
　　0 以下の場合：
　　　　何もしない

ということで、早速作成してみたいと思います。

#作成手順
1. 定期実行させるフローを作成します。
定期実行は、Power Automate の画面左側の「作成」から、「スケジュールされたフロー」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/35521ae9-6acc-83fc-d1ca-320b19062273.png)

1. 初期設定画面。
今から作成するフローに名前を付けます。
開始時間はお好きな時間に設定してください。
繰り返し間隔を1日にし、「作成」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/ee49390c-1d7b-ac1f-39b7-efd4eab11dfb.png)

1. こんな画面になります。
ここから処理を追加していきます。
まずは「新しいステップ」を選択して、処理で利用する変数の初期化を行うアクションを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/11809ea5-436e-511d-a386-c40e373aa270.png)

1. 検索窓に「変数」と入力し、一覧から「変数を初期化する」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/8d37893e-96d8-199b-31f1-0a1e53970926.png)

1. 適当な変数名を付け、種類を「Float」にします。
※SharePoint 側の数値列の型が Float になっているようなので、型を合わせます。
今回は変数の演算を行う前に必ず代入処理を行うため、値（初期値）は空欄のままでも結構です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/5be4fa1f-0dcd-471c-0f58-fafe131a5530.png)

1. 続いて、SharePoint からデータを取得するアクションを追加します。
検索窓に「SharePoint」と入力し、「複数の項目の取得」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/f16fdca0-d612-3095-8827-af9ddecfaa3a.png)

1. 品目リストを格納しているサイトのアドレスとリスト名を選択します。
これで、リストから全データを取得できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/fc3a3a1f-2655-b0c1-21f4-a5395661178b.png)

1. 続いて、取得したデータの残日数が0より大きいかを判断するために条件分岐を挿入します。ちょうど「条件」が表示されているので、それを選択。なければ検索してください。
なお、本来ここからは繰り返し処理となりますが、以後の手順で自動的に繰り返し処理に切り替わりますのでご安心を。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/5f55f812-c016-3fc3-9c17-eb184844fa6c.png)

1. 「残日数が0より大きい場合」としたいので、まずは左辺に「残日数」を設定すると…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/c5a0c447-3a98-32a4-2d07-8dafaae5b5ad.png)

1. お、自動的に繰り返し処理（Apply to each）で囲われました。残日数の項目は繰り返し取得するものと Automate が勝手に判断したためです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/d8e179a4-108a-87a6-6b0e-87ae09924b75.png)

1. 残りの条件を以下のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/0d57f201-622c-825e-3f0d-616fa9aa25d9.png)

1. 続いて、"はい" の場合に減算処理を行います。まずは処理のために変数に値を格納します。これまでと同じ要領で「変数の設定」アクションを追加し、以下のように前述で初期化した変数に残日数の値を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/698ee40c-e97d-f2c9-af45-8242731405e9.png)

1. 次に、先ほどの変数の値を減算します。同じ要領で「変数の値を減らす」アクションを追加し、以下のように設定します。1 減算するので、値を 1 とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/bb55e33a-b30f-39bf-a0fd-0136561eb0c0.png)

1. 最後に減算した変数の値を SharePoint に格納します。同じ要領で「項目の更新」アクションを追加します。
更新したい列だけを更新（残日数の列に先ほどの変数を入れる）したいところですが、必須入力項目は何かしら設定する必要があります。そこで、必須入力列には先ほど SharePoint から取得した値をそのまま格納することで、値を変えずに更新するという方法をとります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/6c1f8955-bb6a-05f2-017b-95317bde32ff.png)
これで、フローは完成です。とりあえず保存しておきましょう。

1. 完成したら、フローに問題がないかチェックします。
画面右上の「フロー チェッカー」をクリックし、エラーや警告が表示されないことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/587160b4-d528-4cfd-d78a-e70fd7b40502.png)

1. 実際にフローをテスト実行してみます。
画面右上の「テスト」をクリックし…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/5bf5c6cc-e4ba-1296-6ab2-ee198be1eb24.png)

1. 「トリガー アクションを実行する」にチェックを入れ、「テスト」（または「保存＆テスト」）をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/f2826437-ecb9-c26b-52b1-3d4eadc21e02.png)

1. 画面下部の「フローの実行」をクリックします。これで実行されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/1352e601-f3ee-c132-9ff6-c543c276421c.png)

1. 実行完了のメッセージが表示されますので、「完了」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/76e16e56-8287-4003-bcdc-45459e207453.png)

1. 各アクションの実行状況が確認できます。
エラーになっていないか確認しましょう（緑色のチェックが表示されていれば OK）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/471298af-c085-32f0-65d9-262174a9ac77.png)
問題なければ、これで完成です。

1. フローの実行状況は、該当フローの詳細画面で確認することができます。
この時点ではまだテスト実行しかしていないため、実際に設定した時刻に動作するかどうかを後ほどチェックしておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/a1f9f75c-a31e-3bbf-f506-4a836ff7ad1e.png)


#おわりに
この程度のフローであれば、関数の記述すらないため、慣れてしまえば誰でも簡単に作成できるのではないかと思います。

「コツを掴んだぜ！」という方は、同じ要領で元記事にあるメール送信処理も加えてみてください^^
メール送信方法についてはテンプレートや数多くの記事が出ていますが、参考に直近の記事であるたく丸さん（@github129）の以下の記事をご紹介しておきますので、ご参考にされてください！
[【#PowerAutomate】Excel から ブログの記事を自動生成してメールで送る方法](https://qiita.com/github129/items/e1504544784bf9decdd6)
<br>
ご参考になれば幸いです。