Power Apps에서 작업을 사용하면 일부 작업에 대해 동적 반환 값이나 입력 값이 발생할 수 있습니다. 이전에는 Power Apps에서 동적 입력 필드가 무시되었으며, Power Fx 표현식에서도 표시되지 않았습니다. 이제 이러한 필드로 직접 작업합니다. 이전에는 반환 유형이 동적일 경우 Power Apps는 부울 값을 반환했습니다. 이제 대신 동적 값을 반환합니다.
참고
Power Fx 식이 이러한 함수의 부울 반환 값에 의존하는 경우 수식을 다시 작성하고 동적 값을 명시적으로 부울로 변환합니다. 'IfError'와 같은 특정 함수는 아직 동적 값을 완전히 지원하지 않습니다. 식에서 이러한 함수 중 하나를 사용하는 경우 이 문서의 끝에 있는 참고 사항에서 해결 방법을 참조하세요.
동적 값을 매개 변수로 전달하기
특정 작업에서는 동적 값을 매개 변수로 사용해야 합니다. Power Fx 레코드가 있는 경우 동적 값으로 변환하여 작업에 전달합니다.
다음 예에서 Dataverse Account 테이블에 대한 병합 작업에는 몇 가지 동적 인수가 필요합니다. 준비하려면 TargetObject, SubordinateObject 및 UpdateContextObject를 저장할 세 개의 변수를 정의합니다. 먼저 예제 전체에서 다시 사용할 수 있는 변수에 Microsoft.Dynamics.CRM.account 텍스트 문자열을 할당합니다.
Set (OdataType, “Microsoft.Dynamics.CRM.account”);
그런 다음 TargetObject에 속성 이름, accountid, @odata.type이 포함된 Power Fx 레코드를 할당합니다. 마찬가지로 Subordinate 및 UpdateContext 개체에 Power Fx 레코드를 할당합니다.
Set (TargetObject, {name: "Test 2", accountid: "145dc2ba-85a2-ed11-aado-0022482d76a5", '@odata.type': OdataType});
Set (SubordinateObject, {name: FirstRecord.’Account name’, accountid: FirstRecord.Account, ‘@odata.type’ : OdataType });
Set (UpdateContextObject, {telephone1: FirstRecord.’Main Phone’, address1_city: FirstRecord.’Address 1 : City’, ‘@odata.type’ : OdataType });
다음으로, 변환 후 동적 레코드를 저장할 세 개의 변수(TargetDynamicValue, SubordinateDynamicValue 및 UpdateContextDynamicValue)를 더 만듭니다. 변환하려면 원래 변수에서 ParseJSON(JSON()) 함수를 사용합니다. 이 작업은 Power Fx 레코드를 동적 값으로 변환합니다.
Set (TargetDynamicValue, ParseJSON(JSON(TargetObject)));
Set (SubordinateDynamicValue, ParseJSON(JSON(SubordinateObject)));
Set (UpdateContextDynamicValue, ParseJSON(JSON(UpdateContextObject)));
마지막으로 병합 작업을 호출하고 동적 형식과 특정 형식 모두에 필요한 매개 변수를 전달합니다.
Environment.Merge({Target: TargetDynamicValue, Subordinate: SubordinateDynamicValue, UpdateContent: UpdateContextDynamicValue, PerformParentingChecks: false });
작업을 통해 반환된 동적 값 사용
작업 기반 커넥터가 개체를 반환하는 경우 형식이 없더라도 해당 속성에 직접 액세스할 수 있습니다. 하지만 Power Apps에서 레이블 지정과 같이 특정한 용도로 속성을 사용하려는 경우 먼저 해당 속성을 캐스팅해야 합니다.
이 예제에서 httpRequest 함수는 이미 부울로 캐스팅된 동적 값을 반환합니다.
Set (response, Office365Groups.HttpRequest("/v1.0/me", "GET", ""));
응답의 속성 중 하나는 displayName입니다. 다음과 같은 Power Fx 표현식을 사용하여 액세스하고 캐스팅할 수 있습니다.
Text(response.displayName)
Power Apps label 컨트롤에서 사용하기 위해 개체 텍스트로 캐스트합니다.
동적 필드 작업
이제 작업 응답이 동적 출력을 캡처하며, 위에서 설명한 방법을 사용하여 이러한 속성에 액세스할 수 있습니다. 동적 입력 필드로 작업할 수도 있습니다.
동적 입력 GetMessageDetails 매개 변수가 있는 Microsoft Teams의 body 작업을 생각해 보세요. 이전에는 이 매개 변수를 보거나 지정할 수 없었습니다. 최근 업데이트에서는 적절한 Power Fx 레코드 구조로 body라는 변수를 설정합니다.
Set ( body, ParseJSON(JSON( {recipient: { groupID: “7f733b36-7c7f-4f4c-9699-0a7b7a2b3897”, channelID: “19: 085d522328fb4a439220641006f7f25@thread.tacv2”}})));
그런 다음 GetMessageDetails 작업을 호출하고 teamsResponse 변수에 응답을 할당할 수 있습니다.
Set (teamsResponse, MicrosoftTeams.GetMessageDetails ( 1661365068558, “channel”, body ));
이전에 부울 값을 반환했던 수식을 동적 값을 반환하도록 변환하기
Power Fx는 제한된 수의 동적 값을 사용하므로 수식에 명시적 변환이 필요할 수 있습니다. 특히 수식이 부울 응답에 의존하는 경우 변환해야 합니다. 오류가 있는지 간단히 알아야 하는 경우 IsError 함수를 사용할 수 있습니다.
If(
IsError(Office365Outlook.CalendarDeleteItemV2("Calendar", 1)),
Notify("An Outlook appointment could not be found or could not be deleted")
)
IfError를 통해서만 사용할 수 있는 오류 정보에 액세스하려면 Boolean, Text 또는 Value와 같은 변환 함수를 사용하여 동적 값을 특정 타입으로 변환해야 합니다. 이러한 함수는 오류가 주어지면 오류를 생성합니다. 다음 예는 이를 보여줍니다.
With({result: Office365Outlook.CalendarDeleteItemV2("Calendar", 1)},
If( IsError(result),
IfError(
Boolean(result), // any conversion function would do, such as Text, Value, …
Notify("An Outlook appointment could not be found or could not be deleted: " & FirstError.Message)
) ) )