はじめに
Dataverse のテーブルにレコードが追加された際に、Power Automate を使用して追加データを Azure Blob Storage へ CSV で出力する方法を検証しました。
フロー
- トリガー:行が追加、変更、または削除された場合
- 変数を初期化する
- 配列変数に追加
- JSON の解析
- CSV テーブルの作成
- BLOB を作成する (V2)
準備:Dataverse にテーブル作成
Power Apps で Copilot を使用して適当にテーブルを作成
1. トリガー:行が追加、変更、または削除された場合
行が作成(追加)されたときにトリガーされるように設定
2. 変数を初期化する
追加された行のデータ(オブジェクト)を格納するための配列変数を定義
3. 配列変数に追加
トリガーから渡された追加された行のデータ(オブジェクト)を配列変数に追加
4. JSON の解析
配列となった追加データに対して JSON の解析を実行
スキーマは自動作成されたフィールドも含めてすべて定義(抜粋することも可)
5. CSV テーブルの作成
読み取ったフィールドから CSV テーブルを作成
このとき必要なフィールドに対して列名を定義
6. BLOB を作成する (V2)
事前に Azure Blob Storage の接続を作成
今回はアクセスキーを使用
出力先とファイル名を設定
Blob content には以下の関数を設定(CSV データの先頭に UTF-8 の BOM を付けて、文字化けしないようにしている)
concat(decodeUriComponent('%EF%BB%BF'),body('CSV_テーブルの作成'))
テスト
Dataverse にデータを追加して挙動を確認
追加されたデータのうち CSV テーブルで定義した列のみが出力されていることを確認
注意点
- 1行だけ追加した場合、トリガーの出力がオブジェクトとなるため配列に変換している
→ 複数行を追加した場合は出力が配列になる可能性あり(未検証) - Azure Blob コネクタでアクセスキー接続する際は完全なエンドポイントを指定する必要あり(ストレージアカウント名だけではNG)
- Power Automate で Azure Blob コネクタを使用する場合、ファイアウォール背後にあるストレージアカウントへの接続は不可