Power AutomateでExcelのテーブルから特定の日のデータだけをノーコードで取得する方法
2022-07-08
azblob://2022/11/11/eyecatch/2022-07-08-atuomate-excel-table-date-000.jpg

こんにちは、さとはるです。

今回は Power Automate でExcelのテーブルから特定の日付が含まれるデータを取得する方法についてご紹介いたします。

方法は色々ありますが、今回は「ノーコード」に拘ってみました。

初級者の方が中級に踏み出す第一歩としておススメです。

サンプルアプリの概要

  • 日付トリガーで一日一回起動する
  • 毎日同じExcelのテーブルを参照する
  • 対象のExcelのテーブルには日付を格納する列がある
    • 「日時」ではないので注意です!
  • 起動した日付のデータを取得する
    • 今回はAutomate上の配列に取得したデータをそのまま追加します
今回扱うExcelの中身

Excelで毎日全データを取得するアプリを作る

前準備として、細かい条件など抜きにしてExcelのテーブルからデータを取得するフローを作ります。

  1. 定期実行フローを作成
  2. Excelコネクタの「表内に存在する表を一覧表示」アクションを追加・設定する
  3. 変数コネクタの「変数を初期化する」アクションでアレイを用意する
  4. Apply to eachコントロールを追加し動的なコンテンツの「value」を選択する
  5. 変数コネクタの「配列変数に追加」で動的なコンテンツの「中身(ここは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中級者です!

本記事が少しでも誰かの手助けになれば幸いです。