技術情報ブログ
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の技術支援や開発を担当しております。

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

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

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

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

Power Automateのベストプラクティス・アンチパターン(6)【Power Automate上でExcelファイルを編集する際の注意点】

2024.06.26

一歩先へ進む企業のためのPower Platform内製化マニュアル:Power Apps・Power Automateの内製化に必要なリンク一覧

2024.06.05

【2024年6月更新】Power Automate 設計・構築時のTips集

2024.05.15

非エンジニア【(元)自治体職員】がローコード開発をして気が付いたこと コーディング規約とPower Platformプレミアムサンプルアプリ集

2024.05.01

Power Apps・Power Automateの勉強方法(2)

モデル駆動型アプリPower AppsPower PlatformSharePointExcelPower AutomateC#attributevalidationローコードAngularAccessInfoPathMatTableAngular Materialデータ構造SortByColumns関数TypeScriptHTMLEF CoreマイグレーションFramework CoreAttribute directivesO/Rマッパーazure sql databaseCase式HTTP RequestCSSxUnit.Net Core 3.1VSCode.Net Core Test ExplorerDataverse for Teamsitem関数Google MapsMarker ClustererRANK()関数Dynamics 365 SalesMicrosoft TranslatorマーカークラスタリングライブラリtailwindcssマルチテナントドロップダウンメニューBreakpointObserverメディアクエリスマホPCレスポンシブ入門初心者中級者キャンバスアプリDatePickerDropdownviewビューアクセス制限承認リマインドSetForAllUpdateContextロードマップ技術It情報技術メッセージIDメールfirst()関数nest入れ子動的リストcollectionコレクション複数の添付ファイル承認フローformエクスポートインポートカスタマイズcomponentダイアログコンポーネントdialogTips新機能変数検索Microsoft 365グループセキュリティグループ送信元メールの送信差出人インスタントクラウドフロー自動化したクラウドフロー委任VBAエラーエクセルerror復元restorePower BI個人列ユーザー列SharePoint Onlineリスト非表示アプリ[市民開発者構築自動化したクラウド フローフローの種類インスタント クラウド フロースケジュール済みクラウド フローレスポンシブ レイアウトresponsive layoutデータ行の制限引き継ぎ退職所有者を変更異動LoopMicrosoftdesignJSONデザインtemplateテンプレート運用選択肢列参照列ChatGPTOpenAIオープンAIチャットGPTgalleryギャラリースクロールコンテナショートカットキーshortcut keyconcat関数文字制限フロー実行開発環境環境本番環境ライセンス環境構築手順pipelineCI/CDパイプラインDevOpsMicrosoft 365簡易在庫管理時間外通知ファイルフィルター クエリドキュメント ライブラリfilter querysortソートmultiple item複数項目シェアポイント便利機能カレンダーCalendarTeamsローコード開発非エンジニア体験談勉強内製化
PageTop
ページトップに戻る