15
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft Power AutomateAdvent Calendar 2024

Day 16

Power Automte で、Excel テーブルを動的に読み取ってデータ転記する

Last updated at Posted at 2024-12-15

はじめに

端的に言うと、SharePoint リストでこれと同じことをしたい感じです。SharePoint リストにはデータフローがないため、正直こういったことには少し不向きな気がしますが、強いて方法を挙げるとすると、あらかじめテーブル化した Excel ファイルをドキュメントライブラリにアップロードして、そこからテーブルを読み取って、動的な値として利用する感じです。

image.png

上記アプローチを取る場合、少し癖があるので、備忘のために整理しておきます。

今回は、簡単なテストということで、以下のようなテーブルを持つファイルをアップロードします。

image.png

何が問題なのか

まず、こんな感じでファイルがアップロードされたら、テーブルを読み取ります。

image.png

ファイルの個所は、動的なコンテンツのフォルダーパス拡張子付きのファイル名を繋げます。

@{triggerOutputs()?['body/{Path}']}@{triggerOutputs()?['body/{FilenameWithExtension}']}

テーブルについては、各ファイル固定化した名前にするか、一旦、先頭のテーブルを指定するかという感じでしょうか。個人的には、前者の方が簡単だと思います。

image.png

@{first(outputs('テーブルの取得')?['body/value'])?['Id']}

これで一応テーブルから行を読み取れますが、残念ながら、テーブルの各列の情報が動的な値に出てきません。これは、実行した際、毎回ファイルが異なるため、Power Automate で作成している段階では、どういった列が存在するか分からないためです。

image.png

対策

実際にアップロードされるファイルのテーブルの列が分かっている場合は、以下のような感じで式を書きます。

まず、[表内に存在する行を一覧表示] アクショは複数行のデータ、つまり配列形式のデータとなるため、Apply to each アクションを追加します。

image.png

そして、それぞれの行の列の値を取得するために、以下のような式を書きます。

@{items('Apply_to_each')?['部署名']}

こんな感じで値が取れるため、例えば、SharePoint リストに転記する場合は [項目の作成] アクションで転記する感じになります。

一応実行してみると、以下のような感じで部署名の情報が取れています。今回は、3 行データがあるため、3 回処理を繰り返しています。取得出来たら、後は転記をするだけです。

image.png

15
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?