はじめに
端的に言うと、SharePoint リストでこれと同じことをしたい感じです。SharePoint リストにはデータフローがないため、正直こういったことには少し不向きな気がしますが、強いて方法を挙げるとすると、あらかじめテーブル化した Excel ファイルをドキュメントライブラリにアップロードして、そこからテーブルを読み取って、動的な値として利用する感じです。
上記アプローチを取る場合、少し癖があるので、備忘のために整理しておきます。
今回は、簡単なテストということで、以下のようなテーブルを持つファイルをアップロードします。
何が問題なのか
まず、こんな感じでファイルがアップロードされたら、テーブルを読み取ります。
ファイルの個所は、動的なコンテンツのフォルダーパス
と拡張子付きのファイル名
を繋げます。
@{triggerOutputs()?['body/{Path}']}@{triggerOutputs()?['body/{FilenameWithExtension}']}
テーブルについては、各ファイル固定化した名前にするか、一旦、先頭のテーブルを指定するかという感じでしょうか。個人的には、前者の方が簡単だと思います。
@{first(outputs('テーブルの取得')?['body/value'])?['Id']}
これで一応テーブルから行を読み取れますが、残念ながら、テーブルの各列の情報が動的な値に出てきません。これは、実行した際、毎回ファイルが異なるため、Power Automate で作成している段階では、どういった列が存在するか分からないためです。
対策
実際にアップロードされるファイルのテーブルの列が分かっている場合は、以下のような感じで式を書きます。
まず、[表内に存在する行を一覧表示] アクショは複数行のデータ、つまり配列形式のデータとなるため、Apply to each アクションを追加します。
そして、それぞれの行の列の値を取得するために、以下のような式を書きます。
@{items('Apply_to_each')?['部署名']}
こんな感じで値が取れるため、例えば、SharePoint リストに転記する場合は [項目の作成] アクションで転記する感じになります。
一応実行してみると、以下のような感じで部署名の情報が取れています。今回は、3 行データがあるため、3 回処理を繰り返しています。取得出来たら、後は転記をするだけです。