6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dataverse添付ファイル(メモ・タイムライン)をPower Automateで扱う

Last updated at Posted at 2024-01-08

こんにちは!
今回はDataverseでの添付ファイル(ファイル列ではない)をPower Automateで扱う方法をご紹介しますー!

Dataverseテーブルの設定を編集する際に表示される、「添付ファイルを有効とする(メモとファイルを含む)」にチェックを入れたときの添付ファイルをPower Automateで扱う方法をご紹介します。
image.png

前提

「添付ファイルを有効とする(メモとファイルを含む)」を選択すると標準テーブルの「メモ」テーブル(英語名:「Note」、スキーマ名:「annotation」)とのリレーションが作成されます。
直接テーブルに列が作成されるのではなく、リレーションを作り「メモ」テーブル側に保存がされるようになります。

標準テーブルとは
Dataverseがある環境を作成した時に自動的に作られるテーブル。
https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/types-of-entities

メモテーブルについては以下を参照ください。

image.png
アプリ側(キャンバスアプリとモデル駆動型アプリ)で添付ができるようになります。
キャンバスアプリでは、フォームなどテーブル操作をするコントロールに「Attachments」という項目が追加され、そこで添付ができるようになります。
モデル駆動型アプリでは「タイムライン」というコンポーネントで添付ができるようになります。

モデル駆動型アプリ編集画面での追加の仕方
image.png

モデル駆動型アプリの再生画面での動き
image.png

詳細はこちらの記事が参考になります。

Power Automateで添付ファイルを扱う

今回は以下の画像のような流れでフローを組み、承認フローの中でファイルを添付するというアクションを行いたいと思います。

image.png

今回の画面は前のバージョンのデザイナー(編集)画面で行っています。
現時点(2024/1/8)で、モダンデザイナーから前のバージョンのデザイナーを開くには右上のトグルボタンで切り替えできます。
image.png

トリガー

トリガーに「行が追加、変更または削除された場合」を使用します。
今回は行が追加されたときの、その新規行のファイルデータをこの後のアクションで扱っていきたいと思います。

メモテーブルの「objecttypecode」列に「親レコードのテーブル論理名(*)」が保存されています。今回はこのテストテーブルに紐づけられる行のみに絞りこみをするために、「行のフィルター」で指定します。

種類の変更:追加
テーブル名:「メモ」テーブル(英語名:「Note」)
スコープ:Organization
行のフィルター:

objecttypecode eq '親レコードのテーブル論理名'

image.png

(*)
「親レコードのテーブル論理名」は以下の方法で取得します。
テーブルの詳細画面で[プロパティ]>[高度なオプション]を開き、論理名をコピーします。

image.png

添付ファイルがテストテーブルに追加されても、もとのテストテーブルの列のアップデートがされるわけではありません。
こちらのトリガーでは、メモテーブルを指定することで、「(モデル駆動型アプリで)タイムラインの添付ファイルが追加されたとき」「(キャンバスアプリで)Attachmentsが追加されたとき」の指定をしています。
image.png

「テストテーブルに変更があったとき」にしたい場合は、テストテーブルを指定してください。そして、次のアクションで、「行を一覧にする」アクションなどでフィルタリングします。

「行を一覧にする」アクションでの指定方法について後述
# おまけ:「行を一覧にする」アクションでの行指定方法

ファイルの利用方法

今回は取得したファイルの情報を承認アクションの中で使用します。

承認アクションについて、今回は承認の種類として、「開始して承認を待機」を選択しました。

承認アクションの中の項目は以下の画像のように指定しました。
大事な添付ファイルについて解説します。
image.png

ファイルの名前は動的なコンテンツのなかから「File Name」を選択します。
image.png

次にファイルコンテンツを指定します。
base64ToBinary式を使用します。
[添付ファイル コンテンツ -1]をクリックし、右のポップアップから[式]を選択
以下の式を入力し、[OK]ボタンをクリック

base64ToBinary(triggerOutputs()?['body/documentbody'])

image.png

画像のような値が入ったら、成功です!
フローを保存します。
image.png

以下の画像のようにそのままのファイルコンテンツを扱うと、
image.png
「ファイルを読み取れない」というエラーが表示されます。

動きの確認

今回は以下のようにモデル駆動型アプリのタイムラインコンポーネントでメモを追加します。

image.png

承認アクションが実行され、Teamsに以下のように通知が届き、添付ファイルをクリックすると、ダウンロードできます。
image.png

中身を見ていくとpdfやjpg、pngなどのファイルを開くことができます。

image.png

おまけ:「行を一覧にする」アクションでの行指定方法

image.png
項目の設定は以下のように行います。

テーブル名:「メモ」テーブル(英語名:「Note」、スキーマ名:「annotation」)
「objecttypecode」列に「親レコードのテーブル論理名」、「objectid」列に「親レコードのID(*)」が保存されています。
行のフィルター:

objecttypecode eq '親レコードのテーブル論理名' and _objectid_value eq '親レコードのID'

(*)
「親レコードのID」は今回、トリガーになっているテストテーブルのGUIDのため、「20231218test」(テーブル名と同じ名前の列)の値を設定します。

image.png

Odataクエリで検索列は以下のように指定します。(NAMEに列名)
_NAME_value

6
5
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
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?