こんにちは、さとはるです。
今回は Power Automate でExcelのテーブルから特定の日付が含まれるデータを取得する方法についてご紹介いたします。
方法は色々ありますが、今回は「ノーコード」に拘ってみました。
初級者の方が中級に踏み出す第一歩としておススメです。
サンプルアプリの概要
- 日付トリガーで一日一回起動する
- 毎日同じExcelのテーブルを参照する
- 対象のExcelのテーブルには日付を格納する列がある
- 「日時」ではないので注意です!
- 起動した日付のデータを取得する
- 今回はAutomate上の配列に取得したデータをそのまま追加します
Excelで毎日全データを取得するアプリを作る
前準備として、細かい条件など抜きにしてExcelのテーブルからデータを取得するフローを作ります。
- 定期実行フローを作成
- Excelコネクタの「表内に存在する表を一覧表示」アクションを追加・設定する
- 変数コネクタの「変数を初期化する」アクションでアレイを用意する
- Apply to eachコントロールを追加し動的なコンテンツの「value」を選択する
- 変数コネクタの「配列変数に追加」で動的なコンテンツの「中身(ここはExcelテーブルの列名)」を選択する
これで全件取得のアプリが完成です!
結果を表示するためにデータ操作コネクタの「作成」に配列変数を渡し、フローのテストを実行します。
中身列の内容が全行分取得できているのがわかります。
特定の日付の行のみデータを取得できるように変更する
比較対象となる日付データの準備
Automateの日付コネクタを使って、比較対象となる日付を用意します。
まずは、「現在の時刻」アクションを追加します。
こちらは特に設定は不要です。
続いて、「過去の時間の取得」アクションを追加します。
「間隔」を「1」、「時間単位」を「日」に設定します。
Excelの日付データをAutomateの日付に揃える
私たちが普段Excelで扱っている日付は「ある基準の日時からの経過日時」を用いて管理されています。
一方のAutomateではISO8601形式という形(2004-04-01T12:00 みたいなやつ)に整形された文字列でしかありません。
違う概念の比較はできないので、Excel側の日付をAutomateの日付に整形してあげる必要があります。
Apply to eachの内側で、日時コネクタの「時間への追加」アクションを追加します。
「基準時間」を「1899/12/30」、「間隔」を動的なコンテンツから「日付」、「時間単位」を「日」に設定します。
日付を比較して処理を分岐する
ここまで用意した動的なコンテンツを使って、処理を分岐します。
Apply to eachの内側で「条件」コントロールを追加します。
左側の「値の選択」に動的なコンテンツから「算出時間」、真ん中の条件に「次の値以上」、右側の「値の選択」に動的なコンテンツから「過去の時間」を選択します。
続いて「追加」ボタンをクリックし、「行の追加」をクリックします。
追加された行にも設定を追加していきます。
左側の「値の選択」に動的なコンテンツから「算出時間」、真ん中の条件に「次の値以下」、右側の「値の選択」に動的なコンテンツから「現在の時間」を選択します。
左上の選択肢は「And」のままで大丈夫です。
条件コントールの後ろにある「はいの場合」の中に、条件にあった行に対して実行したい処理を移動させます。
今回は「配列変数に追加」アクションがそれになります。
ドラッグ&ドロップで移動させます。
これで完成です!
無事に当日の日付のデータだけが取得できていることがわかります。
まとめ
なにかとややこしい日付操作ですが、ノーコードで実現することができました。
Excel側の日付の単位をPower Automateの単位に合わせることで条件コントロールで扱うことができるんですね。
このように、「そのままでは扱えないものを扱える形に整形する」ということができると一気に応用範囲が増えると思います。
そうなったらもうPower Platform中級者です!
本記事が少しでも誰かの手助けになれば幸いです。