Estaba intentando usar Power Automate para generar correos electrónicos automáticos cuando se enviaba una encuesta que tenía datos faltantes al cumplirse ciertas condiciones. Un problema que tuve fue obtener el nombre del proyecto en el correo electrónico. El campo del nombre del proyecto es un dominio de valores codificados y solo mostraba el código y no el valor en el correo, lo cual no es muy útil para la mayoría de las personas. <\/P>
No había visto soluciones para extraer dinámicamente valores de un dominio de valores codificados usando Power Automate que no implicaran crear un nuevo campo en la capa de entidades y llenar ese campo con el valor para luego llamarlo en Power Automate. Mi problema era que los valores CVD están enterrados a un par de niveles dentro de un JSON y me costó mucho trabajo descubrir cómo acceder a ellos. La acción get coded value domains from feature layer puede generar una lista específica de cvd, pero Power Automate no reconocía esto como un formato json válido en pasos posteriores. <\/P>
Aquí está mi flujo de trabajo. Esto usa la conexión premium de ArcGIS. Usé el When a Survey Response is Submitted<\/STRONG> como disparador y la acción "Get Coded Value Domains from Feature Layer<\/STRONG>." Luego agregué la acción Initialize Variable<\/STRONG> con el tipo configurado como String y el valor contenido dinámico apuntando al campo Project Name de When a Survey Response is Submitted. Le di a la variable el nombre Project Value, que es lo que buscarás en Contenido Dinámico más adelante. <\/P>En este punto guarda y ejecuta una prueba. En los resultados de la prueba ve a Get Coded Value Domains from Feature Layer,<\/STRONG> haz clic en Mostrar Salidas Sin Procesar, y luego copia y pega la salida sin procesar en un visor parse json. Yo usé este https:\/\/jsonviewer.stack.hu\/<\/A> Puedes verlo como texto o usar la pestaña Viewer para ver el esquema del json en una vista estructurada expandible para entender cómo está anidado todo. En mi caso estoy buscando el dominio "projname" y los "codes" bajo ese. Codes pone primero el código cvd y luego el valor, está formateado así: "test1234": "Test Project". Names invierte eso y pone primero el valor y luego el código cvd, por lo que obtendrías "Test Project": "test1234". Es importante usar Codes porque el emparejamiento name:value del json <\/P>La siguiente acción a agregar es Parse JSON<\/STRONG>. Para el contenido usaré el contenido dinámico Body <\/STRONG>de Get Coded Value Domains from Feature Layer<\/STRONG> y para llegar al cvd específico que quiero necesito agregar un poco más. Para profundizar un nivel en el json necesitas añadir el nombre del nivel entre corchetes y comillas simples al final del contenido dinámico. Añades otro para el siguiente nivel. Así que para llegar a los codes de mi cvd projname, el contenido de la acción Parse JSON<\/STRONG> se ve así: <\/P>body<\/SPAN>(<\/SPAN>'Get_coded_value_domains_from_feature_layer'<\/SPAN>)[<\/SPAN>'projname'<\/SPAN>][<\/SPAN>'codes'<\/SPAN>]<\/SPAN><\/DIV> <\/DIV>Para el esquema, haz clic en Use Sample Payload to Generate Schema<\/STRONG> y pega la salida sin procesar copiada anteriormente en la ventana emergente. Esto profundizará y devolverá el cvd del nombre del proyecto con los códigos en la posición name del json y los valores cvd en la posición value del json, nuevamente, con este aspecto "test1234": "Test Project".<\/SPAN><\/DIV> <\/DIV>La siguiente acción a agregar es Compose<\/STRONG>, que es donde usaremos la variable que configuramos antes para filtrar la salida body del Parse JSON. En Inputs haz clic en fx para insertar una expresión, luego haz clic en la pestaña Contenido Dinámico en la ventana emergente. De Parse JSON<\/STRONG> agrega Body,<\/STRONG> luego añade corchetes al final y dentro de los corchetes añade Project Value<\/STRONG>, creado por Initialize Variable<\/STRONG>. La expresión se verá así: <\/SPAN><\/SPAN> <\/DIV>body<\/SPAN>(<\/SPAN>'Parse_JSON'<\/SPAN>)[<\/SPAN>variables<\/SPAN>(<\/SPAN>'Project Value'<\/SPAN>)]<\/SPAN><\/DIV> <\/DIV>Dado que profundizamos a través del JSON hasta el cvd con formato code:value como name:value JSON, [variables('Project Value')] nos lleva al último paso pidiendo el valor de un nombre que coincida con la variable Project Value. Como asignamos Project Value al campo Project Name desde la acción "When a survey response is submitted", esto pide el valor específico que coincide con el código del registro enviado. <\/SPAN><\/DIV> <\/DIV>Cuando uso la salida Compose en otra parte del flujo ahora obtendré "Test Project" en lugar de "test1234".<\/DIV><\/DIV><\/DIV><\/DIV>
La siguiente acción a agregar es Parse JSON<\/STRONG>. Para el contenido usaré el contenido dinámico Body <\/STRONG>de Get Coded Value Domains from Feature Layer<\/STRONG> y para llegar al cvd específico que quiero necesito agregar un poco más. Para profundizar un nivel en el json necesitas añadir el nombre del nivel entre corchetes y comillas simples al final del contenido dinámico. Añades otro para el siguiente nivel. Así que para llegar a los codes de mi cvd projname, el contenido de la acción Parse JSON<\/STRONG> se ve así: <\/P>body<\/SPAN>(<\/SPAN>'Get_coded_value_domains_from_feature_layer'<\/SPAN>)[<\/SPAN>'projname'<\/SPAN>][<\/SPAN>'codes'<\/SPAN>]<\/SPAN><\/DIV> <\/DIV>Para el esquema, haz clic en Use Sample Payload to Generate Schema<\/STRONG> y pega la salida sin procesar copiada anteriormente en la ventana emergente. Esto profundizará y devolverá el cvd del nombre del proyecto con los códigos en la posición name del json y los valores cvd en la posición value del json, nuevamente, con este aspecto "test1234": "Test Project".<\/SPAN><\/DIV> <\/DIV>La siguiente acción a agregar es Compose<\/STRONG>, que es donde usaremos la variable que configuramos antes para filtrar la salida body del Parse JSON. En Inputs haz clic en fx para insertar una expresión, luego haz clic en la pestaña Contenido Dinámico en la ventana emergente. De Parse JSON<\/STRONG> agrega Body,<\/STRONG> luego añade corchetes al final y dentro de los corchetes añade Project Value<\/STRONG>, creado por Initialize Variable<\/STRONG>. La expresión se verá así: <\/SPAN><\/SPAN> <\/DIV>body<\/SPAN>(<\/SPAN>'Parse_JSON'<\/SPAN>)[<\/SPAN>variables<\/SPAN>(<\/SPAN>'Project Value'<\/SPAN>)]<\/SPAN><\/DIV> <\/DIV>Dado que profundizamos a través del JSON hasta el cvd con formato code:value como name:value JSON, [variables('Project Value')] nos lleva al último paso pidiendo el valor de un nombre que coincida con la variable Project Value. Como asignamos Project Value al campo Project Name desde la acción "When a survey response is submitted", esto pide el valor específico que coincide con el código del registro enviado. <\/SPAN><\/DIV> <\/DIV>Cuando uso la salida Compose en otra parte del flujo ahora obtendré "Test Project" en lugar de "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:
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.