Power AutomateでDataverseに自動採番をする方法
2022-01-27
azblob://2022/11/11/eyecatch/2022-01-27-power-automate-numbering-dataverse-000.jpg

こんにちは、あおいです。

さて、Dataverseでデータ追加時に自動採番をしたい場合、プライマリ列のデータ型をオートナンバーにすることで実現出来ます。




しかし、Power Automateでデータ追加をする場合、プライマリ列は入力必須項目なので何かしらの値の入力が必要です。これでは自動採番が出来なくて困りますよね…😢




そこで、今回はPower AutomateでDataverseに自動採番をする方法を紹介したいと思います。
自動採番の想定として、1,2,3,4,5,,,,,とインクリメントするフローを組み込みます。

※結論のみ知りたい方は一番最後の追記を参照してください。

Power AutomateでSQL Serverに自動採番をする方法についてはこちらの記事を参考にしてみてください。
Power Automateにてデータベース挿入時、自動採番を補う ー Qiita

本アプリではプレミアムコネクタを使用するので、Power Automateの有料ライセンスが必要です。

まず、テーブルのプライマリ列のデータ型をテキスト型にします。




Power Automateで[インスタントクラウドフロー]を選択して、[手動でフローをトリガーします]をトリガーとします。




[Microsoft Dataverse]コネクタの[行を一覧にする]アクションを選択します。
テーブル名[該当のテーブルを選択]、列を選択する[プライマリ列名を入力]など各項目を設定します。




文字列型・整数型の各変数を初期化します。




[コントロール]コネクタの[条件]アクションを選択します。
条件分岐の左辺には式タブからempty関数を選択します。次に動的なコンテンツタブから[value]を選択してempty関数の引数内にセットします。




右辺には式タブからtrueを選択します。




はいの場合
[Microsoft Dataverse]コネクタの[新しい行を追加する]アクションを選択します。
プライマリ列に1を入力します。





いいえの場合
[データ操作]コネクタの[選択]アクションを選択します。
開始[動的なコンテンツからvalueを選択]、マップ[JSONのプライマリ列の値を取得して、int関数で整数型に変換]など各項目を設定します。
※赤枠のアイコンをクリックしてマップをテキストモードに切り替えます。

JSONの特定の値を取得する方法についてはこちらの記事を参考にしてみてください。
JSONと仲良くなるために(4) ー JSONの値を取得する



[変数の設定]アクションを選択します。
式タブからmax関数を選択し、引数に動的なコンテンツタブから[選択]をセットします。




[変数の値を増やす]アクションを選択します。
整数型の変数[Integer]を選択して、値を1にします。これによって、1,2,3,4,5,,,,,とインクリメントされます。




プライマリ列のデータ型はテキスト型なので、このまま整数型の値を追加しようとしてもエラーになります。
したがって、string関数で文字列型に変換する必要があります。




[Microsoft Dataverse]コネクタの[新しい行を追加する]アクションを選択します。
プライマリ列に先ほど設定した文字列型の変数[String]をセットします。





これでDataverseへの自動採番フローは完成しました!
試しにフローを実行して確認してみましょう!



きちんと1,2,3,4,5,,,,,,とインクリメントされていますね!


今回はPower AutomateでDataverseに自動採番をする方法を紹介させていただきました。
この方法は少し力技なところがありますので、よりよい方法をご存知でしたらご教授いただけると幸いです。


[2022年2月2日 追記]
プライマリ列のデータ型をオートナンバーにして、必須項目を任意に設定すればいいだけでした…😇
まぁ、勉強になったから結果オーライ!