Power AutomateでToDoリストを作成してみる。(Excel)
Power AutomateでToDoリスト作成する
最近ローコード開発が流行っていて、会社でもPower Automateでの社内アプリの開発を勧められています。
そのため、隙間時間でPowerAutomateを触っていたのですが、確かにコーディングしないである程度のフローを作成できるのですが、プログラムを書いているいる人としてはかゆいところに手が届かない感じが否めません。
あとは正直情報が少なすぎて、正直プログラミング経験のない人にとってはかなり難しいものではないかと思います。。。やはり繰り返し処理や変数の考えなどはプログラミングの経験がある人が対応しやすいのかと思います。
ということで今回はPowerAutomateについての記事をまとめてみようかと思います。
私もPowerAutomateを数ヶ月触ってみてある程度操作に慣れてきたので、ToDoリストを作成する工程を例にまとめてみたいと思います。
今回の作成するフローでは、データはエクセルのテーブルを利用し、期限の近いものをメールで通知する仕組みを作成します。
まずは下準備
データの元となるToDoリストを作成します。
※作成するファイルはOneDrive上に保存します。
- テーブルの作成
- 見出しを設定
- データ投入
A列からE列、1行目から3行目までを選択し、「ホーム」→「テーブルとして書式設定」の順に選択します。
・ToDoリスト
1行目の見出しを各種設定を行います。
・A列:ID
・B列:件名
・C列:期限
・D列:状態
・E列:備考
サンプルのデータを入力して、ToDoリストを作成します。
PowerAutomateのステップを作成
今回PowerAutomateで実装するのは、期限の近いToDoをメールで通知するものになります。
大まかな仕組みは、実行されたタイミングでToDoリストをの一覧を取得し、期限の近いものをピックアップして変数に格納します。最後にその変数をメール本文に入れて送付します。
- 実行されたタイミングを決める
- 実行した現在の日付、および未来の日付を取得する
- 現在の時刻
- タイムゾーンの変換
- 未来の時間を取得
- タイムゾーンの変換2
- ExcelのToDoから一覧を取得する
- 変数に期限が近いものを格納
- 変数を作成
- 取得したテーブル情報を1行ずつ繰り返す
- 変数にHTMLの終了タグを設定
- メールを送信
PowerAutomateのページから「作成」→「スケジュール済みクラウドフロー」を選択します。
その後表示されるウィンドウで実行したいタイミングを決めます。今回は毎日9:00に通知させたいので、下記のように入力します。
期限から3日以内のToDoを通知させたいので現在の日程と、3日後の日程を取得する必要があります。
方法としては、「日時」の「現在の時刻」「未来の時間を取得」「タイムゾーンの変換」を使用します。
まずは現在の時刻を取得します。
先程取得した時刻は「協定世界時(UTC)」のため、日本時間である「大阪、札幌、東京(UTC+9:00)」にタイムゾーンの変換を行います。
次に、3日後の時刻も欲しいので、現在の時刻に3日追加した時刻を取得します。
未来の時間の取得についても、タイムゾーンの変換を行う必要がありますので、下記のように入力します。
準備ができたので、いよいよデータベースであるExcelを操作していきたいと思います。
今回データベースとして、Excelを使用しているので、PowerAutomate上でExcelを読み込む必要があります。
ただ、Excelのフローを設定する際には注意が必要です。自身が使用しているofficeソフトが何かによって選ぶものが変わります。
選択肢は大きく2つありまして、Businessかそうでないかです。会社のようにofficeソフトのビジネス版を使用している場合は下記の「Excel Online(Business)」を選択します。
というわけで、私はOneDrive版なので後者の方を選択します。
「Excel Online(OneDrive)」⇒「表内に存在する行を一覧表示」を選択します。
・ファイル:下準備で作成したexcelファイル
・テーブル:ToDoリスト
これで以降のステップで取得したテーブルデータを使用できます。
「変数」⇒「変数を初期化する」を選択し、下記のように初期値を入力します。
なお今回HTMLで作成し、ToDoリストの内容はTableタグで作成します。
「Apply to each」を選択し、先ほどのExcelのvalueを設定します。
繰り返し処理の内部ではまず「Excel時間を変換」します。Excelでは時間部分をシリアル値で保存しているため、「yyyy/MM/dd」の形式で比較できるように値を変換する必要があります。
時間の値を変換できたら、先に取得していた現在と未来の時刻を使い、ToDoの期限が範囲内であるかを確認します。
範囲としては、「現在」と「未来」の間に「ToDoの期限」があることなので下記のようにIF文を作成します。
・「formatDateTime(body('タイム_ゾーンの変換'),'yyyy/MM/dd')」<=「formatDateTime(body('エクセルの時間を変換'),'yyyy/MM/dd')」
・「formatDateTime(body('エクセルの時間を変換'),'yyyy/MM/dd')」<=「formatDateTime(body('タイム_ゾーンの変換_2'),'yyyy/mm/dd')」
上記IF文の範囲に収まる場合の処理として、ToDoリストのIDなどをメール本文に記載するために変数に格納します。
※期限には「formatDateTime(body('エクセルの時間を変換'),'yyyy/MM/dd')」を入力しています。
繰り返し処理が完了したら、ToDoリストを格納している変数にHTMLの終了タグを追加します。
上記までで作成した変数をメール本文に記載し、メールを送信します。
そのため「outlook」⇒「メールの送信(V2)」を選択します。
「宛先」と「件名」にそれぞれ任意の値を入力します。最後に「本文」に先ほどまでの変数を設定します。
フローの完成
上記のようにフローを作成することで、毎日9時にToDoリストを読み込み期限の近いものをメールで通知してくれるようになります。
実装するとしてもIF文を追加するくらいなのでそこまで複雑ではありません。なので、試しに作成してみてください。
最後に
今回は最近使っているPowerAutomateを使ってToDoリストを作成する流れをまとめました。
最初にも書きましたが、PowerAutomateの情報がそこまで豊富ではないので、自分で試しながら作成する必要があります。なので、このようにできるようになったことについてブログでまとめていきたいと思います。
本当はTeamsなどと組み合わせていきたいのですが、個人利用では難しいみたいで、、もう少し確認しながら更新していきたいと思います。
今回はこの辺で、ではまた!