技術情報ブログ
Power Platform
2021.09.08

Power Automate・Dataverse for Teams:選択肢列や参照列の表示名を取得する

Power Automate・Dataverse for Teams:選択肢列や参照列の表示名を取得する

こんにちは、アーティサンの小鷹です。

本記事では、Dataverse for Teamsのテーブルから、Power Automateで選択肢列や参照列のデータを取得する方法についてご紹介します。

 

Power Automateでは「動的なコンテンツ」を指定すると、取得したデータの列情報を得ることができます。
しかしDataverse for Teamsの選択肢列や参照列については、「動的なコンテンツ」で指定しても表示名ではなく内部のID等、想定と違う情報を取得する場合があります。
※本記事は2021年8月時点の情報をもとに執筆しています。

 

Dataverse for Teamsの選択肢列と参照列を「動的なコンテンツ」で設定してみる

Power Automateでは、「動的なコンテンツ」で取得した値を自由に指定できます。
「動的なコンテンツ」は、マウスでクリックするだけで、取得したデータの列やプロパティ等の値を指定できる優れものですが、想定していたものとは違う値が指定されてしまう時があります。

例えば、Dataverse for Teamsで、次のようなテーブルとデータを作成します。

Dataverse for Teams - テーブル

各列に設定したデータ型をそのまま列名にしています。
(参照列は、別途参照用テーブルを作成しています。)
そしてPower Automateでは、作成したDataverse for Teamsテーブルからデータを取得するフローを作成します。

サンプルフロー - 全体図

HTMLテーブルの作成アクションでは、「動的なコンテンツ」で出力する列を指定しています。 また、行を一覧にするアクションの行のフィルターで「テキスト列が”テキスト – 1″と一致する」行だけを出力するように絞っています。
そうすると、”テキスト – 1″の1行だけがHTMLテーブルの作成アクションで出力されるはずです。

では、早速テストして出力結果を見てみましょう。

出力結果1

「選択肢 – 1」や「参照 – 1」の値が取得される想定でしたが、それとは全く違う英数字が格納されました。

選択肢列の「動的なコンテンツ」は1つしかありません。
参照列の「動的なコンテンツ」は、<列名>(値)と<列名>(種類)の2種類ありますが、どちらを選択しても「参照 – 1」の値で取得できませんでした。

動的なコンテンツ - 参照列

「選択肢 – 1」や「参照 – 1」の値を取得するにはどうすればいいのかを、次項で説明します。

 

回避方法

item関数を使用し、Dataverse for Teamsテーブルから、選択肢列や参照列の表示名を格納している列を直接指定します 。

まず、HTMLテーブルの作成アクションのを「自動」に変更し、全列出力してみます。

Power Automate - HTMLテーブルの出力

出力結果を確認すると、「選択肢 – 1」や「参照 – 1」が入った列も入っていることがわかります。

Power Automate - HTMLテーブルの出力 - 表示名列

「<選択肢列・参照列の内部名>@OData.Community.Display.V1.FormattedValue」という長い列名をitem関数で直接指定すると、欲しい値の「選択肢 – 1」や「参照 – 1」が取得できます。

選択肢列:

item()?[‘<選択肢列の内部名>@OData.Community.Display.V1.FormattedValue’]

参照列(参照列は内部名の前に「_(アンダースコア)」が付きます):

item()?[‘_<参照列の内部名>@OData.Community.Display.V1.FormattedValue’]

Power Automate - HTMLテーブルの出力 - item関数

テストしてみると…

出力結果2

「選択肢 – 1」や「参照 – 1」の値が取得できました。

 

解説

何故「動的なコンテンツ」で取得出来ないのでしょうか。順を追って説明します。

まず、Dataverse for Teamsテーブルの選択肢列と参照列の構造について解説します。 前の項で全列出力したデータを確認してみましょう。

Power Automate - HTMLテーブルの出力 - 表示名列

例えば、この画像を見ると、選択肢列の内部名「crebdb_choices」が含まれた列が複数あります。一つの選択肢列に対して、内部で複数の列を持っていることがわかります。
参照列も同じように、一つの列に対して内部では複数の列を持っています。

次に、「動的なコンテンツ」にマウスカーソルを乗せてみます。 item()?[‘credb_choices’]と、item関数で選択肢列の内部名が指定されていますね。

マウスオーバー

指定されている「credb_choices」列には、選択肢列の内部的にはIDにあたる値が格納されています。

テキスト列などは「動的なコンテンツ」で問題なく取得できますが、内部で複数列を持つ選択肢や参照列に関しては、「動的なコンテンツ」ではなくitem関数で直接指定する必要があります。

 

【おまけ】items関数

item関数の他に、items関数というよく似た名前の関数があります。

item関数は色々なアクションに使用できる関数ですが、items関数はApply to eachアクション内でのみ使用可能という大きな違いがあります。
関数の書き方自体はitem関数とほぼ一緒です。

例:

items(‘<Apply to eachのアクション名>’)?[‘<列の内部名>’]

 

さいごに

それでは最後に、Power AutomateでDataverse for Teamsのテーブルから「選択肢列」と「参照列」の表示名を取得したい時のポイントをまとめておきます。

  • Dataverse for Teamsテーブルのデータ型の中には、選択肢型や参照型のように内部で複数の列を持つものがある
  • Dataverse for Teamsの選択肢型と参照型の列の値を取得したい時は、item関数で選択肢列や参照列の「表示名を格納した列」を指定する

今回実現した内容の中では、「item関数を手動設定する」という所が特にキーポイントでした。

普段は「動的なコンテンツ」が自動で設定してくれるのであまり馴染みがないかもしれませんが、手動でも設定できると知っておくとPower Automateでできることが更に広がります。

フローを作成する時に、本記事を思い出していただけたら幸いです。

アーティサン株式会社では、Power AutomateやPower Appsの技術支援も行っております。

もし作成に行き詰った時やアドバイスが欲しい時はお気軽にお問合せ下さい。

 Power Platform(Power Automate、Power Apps)とSharePointの技術支援や開発を担当の小鷹枝里子

小鷹 枝里子

2016年12月、メーカーの事務兼CADオペレーターから未経験のIT業界に飛び込もうとアーティサンに入社。

今は主に Power Platform(Power Automate、Power Apps)とSharePointの技術支援や開発を担当しております。

山形県出身、神奈川県在住。何となく海に近い所に住むのが好きです。インドア派なので滅多に海行かないんですけどね。

趣味はゲームで、最近はのんびりスマホゲームや某狩りゲームをやってます。

推しのうまい棒は納豆味。

シェアする
記事カテゴリ
最新記事
2025.04.30

Power Apps, Power Automate で作る NFC タグを活用したアプリ例

2025.04.16

Power Apps で NFC タグを使ってみる

2025.04.02

Copilot Studioで作成したコパイロットをTeams に追加する方法

2025.03.19

SharePoint リストで主キーを実装し、比較してみた

2025.03.12

SharePointのデザインをもっとおしゃれに!(X-SP Design | SharePoint デザイン拡張サービスのご紹介)(4) サンプルの紹介その2

データ構造.Net Core Test Explorerレスポンシブ技術カスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列X-SPNFCタグモデル駆動型アプリSortByColumns関数Dataverse for Teams入門ItcomponentVBAフローの種類選択肢列環境sortガバナンス登録日StylePowerAutomatePower AppsTypeScriptitem関数初心者情報技術ダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者StudioPower PlatformHTMLGoogle Maps中級者メッセージIDコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日AISharePointEF CoreMarker Clustererキャンバスアプリメールdialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更生成系AIExcelマイグレーションRANK()関数DatePickerfirst()関数Tips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBCopilotPower AutomateFramework CoreDynamics 365 SalesDropdownnest新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携licenseC#Attribute directivesMicrosoft Translatorview入れ子変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続添付ファイルコントロールattributeO/Rマッパーマーカークラスタリングライブラリビュー動的リスト検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローファイルサイズvalidationazure sql databasetailwindcssアクセス制限collectionMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binフルリモートワークローコードCase式マルチテナント承認コレクションセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールごみ箱アーティサンAngularHTTP Requestドロップダウンメニューリマインド複数の添付ファイル送信元リストLoopショートカットキー時間外非エンジニアDataverseアクセス許可ArtisanAccessCSSBreakpointObserverSet承認フローメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSharePoint Framework転職InfoPathxUnitメディアクエリForAllform差出人アプリdesignconcat関数ファイル勉強表示SPFx主キーMatTable.Net Core 3.1スマホUpdateContextエクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替サンプルCopilot StudioAngular MaterialVSCodePCロードマップインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者samplePowerApps
PageTop
ページトップに戻る