Ich habe versucht, Power Automate zu verwenden, um automatisierte E-Mails zu generieren, wenn eine Umfrage eingereicht wurde, die fehlende Daten enthielt, wenn bestimmte Bedingungen erfüllt waren. Ein Problem war, den Projektnamen in die E-Mail zu bekommen. Das Feld für den Projektnamen ist eine coded value domain und es wurde nur der Code und nicht der Wert in der E-Mail angezeigt, was für die meisten Leute nicht sehr nützlich ist. <\/P>
Ich hatte keine Lösungen gesehen, um Werte dynamisch aus einer coded value domain mit Power Automate abzurufen, ohne ein neues Feld in der Feature Layer zu erstellen und dieses Feld mit dem Wert zu füllen und dann das Feld in Power Automate aufzurufen. Mein Problem war, dass die CVD-Werte ein paar Ebenen tief in einem JSON vergraben sind und ich hatte große Schwierigkeiten herauszufinden, wie man darauf zugreift. Die Aktion get coded value domains from feature layer kann eine spezifische cvd-Liste ausgeben, aber Power Automate wollte sie in späteren Schritten nicht als gültiges json-Format erkennen. <\/P>
Hier ist mein Workflow. Dieser verwendet die Premium-Stufe ArcGIS-Verbindung. Ich habe When a Survey Response is Submitted<\/STRONG> als Auslöser verwendet und "Get Coded Value Domains from Feature Layer<\/STRONG> als Aktion. Dann habe ich die Aktion Initialize Variable<\/STRONG> hinzugefügt mit dem Typ String und dem Wert dynamischer Inhalt, der auf das Projektname-Feld von When a Survey Response is Submitted zeigt. Ich habe der Variablen den Namen Project Value gegeben, nach dem Sie später im Dynamic Content suchen werden. <\/P>Speichern Sie an dieser Stelle und führen Sie einen Test durch. Gehen Sie in den Testergebnissen zur Get Coded Value Domains from Feature Layer,<\/STRONG> klicken Sie auf Show Raw Outputs und kopieren Sie dann die Rohdaten in einen Parse JSON Viewer. Ich habe diesen hier verwendet https:\/\/jsonviewer.stack.hu\/<\/A> Sie können ihn als Text ansehen oder den Viewer-Tab verwenden, um das Schema des JSON in einer erweiterbaren Strukturansicht zu sehen und zu verstehen, wie alles verschachtelt ist. In meinem Fall suche ich nach der "projname"-Domain und den "codes" darunter. Codes stellt zuerst den cvd-Code und dann den Wert dar, formatiert wie "test1234": "Test Project". Names kehrt das um und stellt zuerst den Wert und dann den cvd-Code dar, also erhalten Sie "Test Project": "test1234". Es ist wichtig, Codes zu verwenden wegen der name:value-Paarung des JSON <\/P>Die nächste Aktion, die ich hinzufüge, ist Parse JSON<\/STRONG>. Für den Inhalt verwende ich den Body <\/STRONG>dynamischen Inhalt von Get Coded Value Domains from Feature Layer<\/STRONG> und um zum spezifischen cvd zu gelangen, muss ich noch etwas hinzufügen. Um eine Ebene im JSON tiefer zu gehen, müssen Sie den Namen der Ebene in eckigen Klammern und Apostrophen an das Ende des dynamischen Inhalts anhängen. Für die nächste Ebene fügen Sie eine weitere hinzu. Um also zu den Codes meines projname-cvd zu gelangen, sieht der Inhalt der Parse JSON<\/STRONG>-Aktion so aus: <\/P>body<\/SPAN>(<\/SPAN>'Get_coded_value_domains_from_feature_layer'<\/SPAN>)[<\/SPAN>'projname'<\/SPAN>][<\/SPAN>'codes'<\/SPAN>]<\/SPAN><\/DIV> <\/DIV>Für das Schema klicken Sie auf Use Sample Payload to Generate Schema<\/STRONG> und fügen die zuvor kopierten Rohdaten im Popup-Fenster ein. Dies geht tiefer und gibt die projname-cvd mit den Codes an der Namensposition des JSON zurück und die cvd-Werte an der Wertposition des JSON, wieder so formatiert: "test1234": "Test Project".<\/SPAN><\/DIV> <\/DIV>Die nächste Aktion ist Compose<\/STRONG>, wo wir die zuvor gesetzte Variable verwenden werden, um die Body-Ausgabe von Parse JSON zu filtern. Klicken Sie bei Inputs auf fx zum Einfügen eines Ausdrucks, dann auf den Tab Dynamic Content im Popup-Fenster. Von Parse JSON<\/STRONG> fügen Sie Body,<\/STRONG> dann eckige Klammern am Ende hinzu und zwischen die Klammern kommt der Project Value<\/STRONG>, erstellt durch Initialize Variable<\/STRONG>. Der Ausdruck sieht so aus: <\/SPAN><\/SPAN> <\/DIV>body<\/SPAN>(<\/SPAN>'Parse_JSON'<\/SPAN>)[<\/SPAN>variables<\/SPAN>(<\/SPAN>'Project Value'<\/SPAN>)]<\/SPAN><\/DIV> <\/DIV>Da wir im JSON bis zum cvd mit dem code:value als name:value JSON-Format vorgedrungen sind, führt uns [variables('Project Value')] den letzten Schritt hinunter und fragt nach dem Wert eines Namens, der mit der Project Value-Variablen übereinstimmt. Da wir Project Value dem Projektname-Feld aus der Aktion "When a survey response is submitted" zugewiesen haben, wird hier nach dem spezifischen Wert gefragt, der zum Code des eingereichten Datensatzes passt. <\/SPAN><\/DIV> <\/DIV>Wenn ich die Compose-Ausgabe anderswo im Flow verwende, erhalte ich jetzt "Test Project" statt "test1234".<\/DIV><\/DIV><\/DIV><\/DIV>
Die nächste Aktion, die ich hinzufüge, ist Parse JSON<\/STRONG>. Für den Inhalt verwende ich den Body <\/STRONG>dynamischen Inhalt von Get Coded Value Domains from Feature Layer<\/STRONG> und um zum spezifischen cvd zu gelangen, muss ich noch etwas hinzufügen. Um eine Ebene im JSON tiefer zu gehen, müssen Sie den Namen der Ebene in eckigen Klammern und Apostrophen an das Ende des dynamischen Inhalts anhängen. Für die nächste Ebene fügen Sie eine weitere hinzu. Um also zu den Codes meines projname-cvd zu gelangen, sieht der Inhalt der Parse JSON<\/STRONG>-Aktion so aus: <\/P>body<\/SPAN>(<\/SPAN>'Get_coded_value_domains_from_feature_layer'<\/SPAN>)[<\/SPAN>'projname'<\/SPAN>][<\/SPAN>'codes'<\/SPAN>]<\/SPAN><\/DIV> <\/DIV>Für das Schema klicken Sie auf Use Sample Payload to Generate Schema<\/STRONG> und fügen die zuvor kopierten Rohdaten im Popup-Fenster ein. Dies geht tiefer und gibt die projname-cvd mit den Codes an der Namensposition des JSON zurück und die cvd-Werte an der Wertposition des JSON, wieder so formatiert: "test1234": "Test Project".<\/SPAN><\/DIV> <\/DIV>Die nächste Aktion ist Compose<\/STRONG>, wo wir die zuvor gesetzte Variable verwenden werden, um die Body-Ausgabe von Parse JSON zu filtern. Klicken Sie bei Inputs auf fx zum Einfügen eines Ausdrucks, dann auf den Tab Dynamic Content im Popup-Fenster. Von Parse JSON<\/STRONG> fügen Sie Body,<\/STRONG> dann eckige Klammern am Ende hinzu und zwischen die Klammern kommt der Project Value<\/STRONG>, erstellt durch Initialize Variable<\/STRONG>. Der Ausdruck sieht so aus: <\/SPAN><\/SPAN> <\/DIV>body<\/SPAN>(<\/SPAN>'Parse_JSON'<\/SPAN>)[<\/SPAN>variables<\/SPAN>(<\/SPAN>'Project Value'<\/SPAN>)]<\/SPAN><\/DIV> <\/DIV>Da wir im JSON bis zum cvd mit dem code:value als name:value JSON-Format vorgedrungen sind, führt uns [variables('Project Value')] den letzten Schritt hinunter und fragt nach dem Wert eines Namens, der mit der Project Value-Variablen übereinstimmt. Da wir Project Value dem Projektname-Feld aus der Aktion "When a survey response is submitted" zugewiesen haben, wird hier nach dem spezifischen Wert gefragt, der zum Code des eingereichten Datensatzes passt. <\/SPAN><\/DIV> <\/DIV>Wenn ich die Compose-Ausgabe anderswo im Flow verwende, erhalte ich jetzt "Test Project" statt "test1234".<\/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:
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.