SetProperty() não está atualizando um objeto conforme esperado.
Inicializei um objeto HasAtLeast1AttachmentsWith = {"CapitalCall":"False"}
.
Em seguida, crio uma ação de composição com a expressão abaixo
if(condition,setProperty(variables('HasAtLeast1AttachmentsWith'),'CapitalCall','True'),0)
Executei um teste em que a condição if retorna verdadeiro e a saída do Compose mostra corretamente {"CapitalCall":"True"}
. No entanto, HasAtLeast1AttachmentsWith
permanece como {"CapitalCall":"False"}
/ não foi atualizado por setProperty
. Alguém sabe por que isso acontece? Preciso que a ação Compose atualize o objeto se a condição for válida.
No meu caso de uso, terei várias atualizações no objeto, cada uma baseada em uma expressão lógica distinta. Não seria possível lidar com tudo isso em uma única ação de composição usando expressões?
setProperty()
não atualiza a variável diretamente, ele retorna o valor da variável depois desetProperty()
ter sido executado sobre ela.Você precisa usar um padrão onde você usa a
Compose
para executar asetProperty()
expressão e então passa o resultado dessa composição de volta para sua variável usando umaSet Variable
ação.Inicializar objeto
Isso cria um objeto básico com uma única propriedade chamada
Property1
Propriedade do conjunto de composição
É aqui que você executa a
setProperty()
expressão, é isso que eu tenho nessa etapa...Definir objeto de teste
Esta é uma
Set Variable
operação que define a variávelTest Object
usando a saída da etapa anterior.Este é o resultado final...
Resumindo, você não pode fazer auto-referência na estrutura de expressão do PowerAutomate, por isso você usa um
Compose
no meio e também por que você não pode usarSet Variable
para fazer o que a etapa de composição está fazendo, eles precisam ser separados.setProperty apenas retorna uma cópia do JSON com aquele par de chave-valor específico modificado. Para modificar uma variável, você precisa executar uma ação de configuração e defini-la como a saída JSON desejada (que pode ser, por exemplo, a saída do comando compose).