ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

【質問回答】【改良版】ExcelのテーブルをClearCollect関数の実行文に変換する

先日公開した下記フローのを改良しました。
wataruf.hatenablog.com

改良版のフローをGitHubで公開しました。前回アップロードしたファイルと同じです。上書きアップロードしました。
下記リンク先からダウンロードしてください。
github.com

背景と改良した内容

背景

前回公開したフローについてあんこさんから以下のような要望をいただきました。


前回公開したフローはテーブルにあるすべてのデータを、記載されたテキストのまま読み込むフローです。そのため、日付データの部分がについても固定の文字列でテーブルに記載されていることが前提のフローになっています。

Excelのテーブルに記載しているのに日付が固定の文字列なのはもったいないですね。前回のフローを作成したときはあくまでサンプルのフローとして作成したためそこまでこだわらずに作成しましたが、せっかくご要望をいただいたので改良に挑戦してみました。

改良した内容

というわけで改良した内容は「テーブルに存在するすべての列の型を確認して、日付形式のデータが存在する場合は指定書式(例:yyyy/M/d)に変換する」という内容です。日付形式の列がどの列であるかを指定する必要はありません。日付形式の列が複数ある場合はそれらのすべての列に対して変換対応を行います。

解説するフロー図

アクションの設定を閉じた状態のフロー図

前回公開したフローと大きく違う箇所は下記の赤枠部分です。

開いた状態のフロー図


フローの使用イメージ

「スコープ-取得したプロパティに対してconvertTimeZone関数を実行」という名前のスコープで convertTimeZone関数を使用しています。ここで変換後の日付の書式を指定してください。GitHubで公開しているフローでは yyyy/M/d としています。必要に応じて変更してください。

フローの使いかたは改良前のフローと同じです。フローのアクションが対象としているライブラリにCSVがアップロードしたうえで、手動でフローを実行します。

改良版のフローで使用するCSVは以下の通りです。見た目上は前回のフローで使用したCSVとほぼ同じですが、今回のCSVは「出版日」列のデータが文字列ではなく日付形式になっています。
 ※ 検証環境のロケーション設定の関係で表示形式が MM/dd/yyyy になっています。

このフローではExcelファイルのテーブルから取得した日付データを配列上で ISO8601形式で保持しています。

さらにフローの処理が進むと、上記の配列が持つプロパティのうちデータ形式が日付であるものを指定した書式に変換します。

そして、その内容が含まれたClearCollect関数の実行文が作成されます。

作成されたClearCollect関数をPower Apss に貼り付けて実行します。

はい。期待通りコレクションが登録されました。

改良版のフローをGitHubで公開しています(再掲)

このフローはGitHubで公開しています。下記リンク先からダウンロードしてください。
github.com

解説は別の回で行います

今回の改良に関して解説したいことが3つあります(メイン2つ + サブ1つ)。それぞれ別解で触れたいと考えています。
・配列のプロパティに対して繰り返し処理を行う
・日付型であるかどうかの判定
・フローのエラーハンドリングに関するTIPS

今回は以上です。

追記:解説編を投稿しました。

wataruf.hatenablog.com