特定の条件が満たされたときにデータが欠落しているアンケートが送信された際に、自動メールを生成するためにPower Automateを使おうとしていました。 一つの問題は、プロジェクト名をメールに入れることでした。 プロジェクト名フィールドはコード値ドメインであり、メールにはコードだけが表示されて値が表示されなかったため、多くの人にとってあまり役に立ちませんでした。 <\/P>
Power Automateを使ってコード値ドメインから動的に値を取得する解決策は見たことがなく、新しいフィールドをフィーチャレイヤーに作成し、そのフィールドに値を入力してからPower Automateでそのフィールドを呼び出す方法以外ありませんでした。私の問題は、CVDの値がJSONの数レベル深く埋もれていて、それらにアクセスする方法を見つけるのが非常に難しかったことです。 フィーチャレイヤーからコード値ドメインを取得するアクションは特定のcvdリストを出力できますが、Power Automateは後続のステップでそれを有効なjson形式として認識しませんでした。 <\/P>
これが私のワークフローです。これはプレミアムレベルのArcGIS接続を使用しています。トリガーとしてWhen a Survey Response is Submitted を使用し、アクションとして"Get Coded Value Domains from Feature Layer"を使いました。その後、Initialize Variableアクションを追加し、タイプをStringに設定し、値にはWhen a Survey Response is Submittedからのプロジェクト名フィールドへの動的コンテンツを指定しました。変数名はProject Valueとし、後でDynamic Contentで探す名前になります。 <\/P>
ここで保存してテストを実行します。テスト結果でGet Coded Value Domains from Feature Layerに移動し、「Show Raw Outputs」をクリックして、生の出力をコピーしてparse jsonビューアに貼り付けます。私はこのビューア https:\/\/jsonviewer.stack.hu\/<\/A> を使いました。テキストとして見るか、Viewerタブでjsonのスキーマを展開可能な構造ビューで確認してネスト構造を理解できます。私の場合、「projname」ドメインとその下の「codes」を探しています。Codesはcvdコードが最初にあり、その後に値があり、「test1234": "Test Project"」のような形式です。Namesは逆で値が最初でcvdコードが後ろなので「Test Project": "test1234"」となります。jsonのname:valueペアリングとしてCodesを使うことが重要です。<\/P>次に追加するアクションはParse JSONです。コンテンツにはGet Coded Value Domains from Feature LayerからのBody <\/STRONG>動的コンテンツを使い、特定のcvdへ掘り下げるため少し追加します。json内の階層を掘り下げるには動的コンテンツの末尾に角括弧と引用符で階層名を追加します。次の階層も同様に追加します。したがってprojname cvdのcodesへアクセスするにはParse JSONアクションのコンテンツは以下のようになります: <\/P>body<\/SPAN>(<\/SPAN>'Get_coded_value_domains_from_feature_layer'<\/SPAN>)[<\/SPAN>'projname'<\/SPAN>][<\/SPAN>'codes'<\/SPAN>]<\/SPAN><\/DIV> <\/DIV>スキーマについては、Use Sample Payload to Generate Schemaをクリックし、先ほどコピーした生データをポップアップウィンドウに貼り付けます。これによって掘り下げられ、json内で名前位置にコード、値位置にcvd値があるプロジェクト名cvdが返されます。例として"test1234": "Test Project"という形になります。<\/SPAN><\/DIV> <\/DIV>次に追加するアクションはComposeです。ここでは先ほど設定した変数を使ってParse JSONからのボディ出力をフィルターします。入力欄でfxボタンをクリックして式挿入モードにし、ポップアップウィンドウでDynamic ContentタブからParse JSONのBody, を選択し、その末尾に角括弧[]を付け、中括弧内にはInitialize Variableで作成したProject Value変数を入れます。式は以下のようになります: <\/SPAN><\/SPAN> <\/DIV>body<\/SPAN>(<\/SPAN>'Parse_JSON'<\/SPAN>)[<\/SPAN>variables<\/SPAN>(<\/SPAN>'Project Value'<\/SPAN>)]<\/SPAN><\/DIV> <\/DIV>JSON内でコード:値形式(name:value)になっているcvdまで掘り下げているので[variables('Project Value')]は最後のステップとしてProject Value変数と一致する名前の値を取得しています。Project Valueには"When a survey response is submitted"アクションからプロジェクト名フィールドが割り当てられているため、この式は送信されたレコードのコードと一致する特定の値(名称)を要求しています。 <\/SPAN><\/DIV> <\/DIV>このCompose出力をフロー内他所で使用すると、「test1234」ではなく「Test Project」が得られます。<\/DIV><\/DIV><\/DIV><\/DIV>
次に追加するアクションはParse JSONです。コンテンツにはGet Coded Value Domains from Feature LayerからのBody <\/STRONG>動的コンテンツを使い、特定のcvdへ掘り下げるため少し追加します。json内の階層を掘り下げるには動的コンテンツの末尾に角括弧と引用符で階層名を追加します。次の階層も同様に追加します。したがってprojname cvdのcodesへアクセスするにはParse JSONアクションのコンテンツは以下のようになります: <\/P>body<\/SPAN>(<\/SPAN>'Get_coded_value_domains_from_feature_layer'<\/SPAN>)[<\/SPAN>'projname'<\/SPAN>][<\/SPAN>'codes'<\/SPAN>]<\/SPAN><\/DIV> <\/DIV>スキーマについては、Use Sample Payload to Generate Schemaをクリックし、先ほどコピーした生データをポップアップウィンドウに貼り付けます。これによって掘り下げられ、json内で名前位置にコード、値位置にcvd値があるプロジェクト名cvdが返されます。例として"test1234": "Test Project"という形になります。<\/SPAN><\/DIV> <\/DIV>次に追加するアクションはComposeです。ここでは先ほど設定した変数を使ってParse JSONからのボディ出力をフィルターします。入力欄でfxボタンをクリックして式挿入モードにし、ポップアップウィンドウでDynamic ContentタブからParse JSONのBody, を選択し、その末尾に角括弧[]を付け、中括弧内にはInitialize Variableで作成したProject Value変数を入れます。式は以下のようになります: <\/SPAN><\/SPAN> <\/DIV>body<\/SPAN>(<\/SPAN>'Parse_JSON'<\/SPAN>)[<\/SPAN>variables<\/SPAN>(<\/SPAN>'Project Value'<\/SPAN>)]<\/SPAN><\/DIV> <\/DIV>JSON内でコード:値形式(name:value)になっているcvdまで掘り下げているので[variables('Project Value')]は最後のステップとしてProject Value変数と一致する名前の値を取得しています。Project Valueには"When a survey response is submitted"アクションからプロジェクト名フィールドが割り当てられているため、この式は送信されたレコードのコードと一致する特定の値(名称)を要求しています。 <\/SPAN><\/DIV> <\/DIV>このCompose出力をフロー内他所で使用すると、「test1234」ではなく「Test Project」が得られます。<\/DIV><\/DIV><\/DIV><\/DIV>
Hi @TylerGraham2 , thank you so much for putting this post together. I have been struggling for days with getting domain labels rather than codes in to an MS Teams chat. I was about to tell my client that it couldn't be done, but thanks to your post I have managed it!
My flow has a scheduled trigger, so the Initialize Variable seems to work differently. I had to leave the value empty in the Initialize Variable action, because Power Automate was forcing it in to a For Each loop. Then within my Apply To Each loop, I added a Set Variable with the value expression:
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.