Pular para o conteúdo

Cálculos e referências de resposta

Transforme respostas em números, como preços e pontuações, e mostre respostas ou resultados nas perguntas seguintes e na tela final do formulário.

Ver em Markdown (inglês)

Todas as páginas da documentação
Nesta página

O que você precisa saber

  • Um cálculo é um número com nome, calculado a partir das respostas: um preço, uma pontuação ou uma contagem, por exemplo.
  • Ele é uma pequena árvore de expressão: leia respostas com answer, some as pontuações das opções com option_score e combine valores com operações de exatamente dois argumentos.
  • Se alguma entrada ainda não foi respondida, o cálculo ainda não tem valor.
  • A referência de resposta mostra uma resposta anterior, ou o resultado de um cálculo, numa pergunta seguinte ou na tela final.
  • Cálculos e referências de resposta estão disponíveis em todos os planos.
  • O trulyform não recebe pagamentos. Um cálculo pode mostrar um valor, mas a cobrança precisa ser feita por fora.

Formato do cálculo

Os cálculos ficam na lista calculations da definição:

Chave Observações
id Um UUIDv7, único no formulário.
name Obrigatório, com até 100 caracteres. O dono do formulário vê esse nome ao lado de cada resposta.
decimals Obrigatório. Número de casas decimais do resultado, de 0 a 6.
expression O nó raiz da expressão.

Nós de expressão

A referência técnica a seguir é gerada a partir do código e está em inglês, como os assistentes de IA a leem.

Nó Formato Valor
constant {"type": "constant", "value": "1.5"} A decimal number, written as a string.
answer {"type": "answer", "ref": "<question id>"} The answer to a number, nps, opinion_scale question.
option_score {"type": "option_score", "ref": "<question id>"} The total score of the options chosen in a single_choice, dropdown, multiple_choice, ranking, matrix question.
calculation {"type": "calculation", "ref": "<calculation id>"} The result of another calculation.
add {"type": "add", "args": [a, b]} a + b
subtract {"type": "subtract", "args": [a, b]} a − b
multiply {"type": "multiply", "args": [a, b]} a × b
divide {"type": "divide", "args": [a, b]} a ÷ b, to 6 decimal places. Dividing by zero gives no result.
min {"type": "min", "args": [a, b]} The smaller of a and b.
max {"type": "max", "args": [a, b]} The larger of a and b.
round {"type": "round", "args": [a, {"type": "constant", "value": "0"}]} a rounded half up to the number of decimal places in the second argument, 0 to 6.

As operações recebem exatamente dois argumentos, e uma expressão pode ter até 12 níveis de aninhamento. Cada formulário pode ter até 100 cálculos.

Como os resultados são calculados

  • A aritmética é decimal e exata: 0,1 + 0,2 dá 0,3.
  • Cada etapa guarda 6 casas decimais, arredondando metades para cima. A divisão também para na sexta casa, então 1 ÷ 3 dá 0,333333.
  • O resultado final é arredondado, com metades para cima, para o número de casas em decimals.
  • Um nó calculation usa o valor sem arredondamento do cálculo referenciado, não o resultado mostrado com os decimals dele. Se um cálculo mostra 1,5 como 2, outro que dobra esse valor dá 3. Para usar o valor mostrado, coloque a referência dentro de um nó round.
  • Os resultados precisam ficar abaixo de 10^18 em valor absoluto.
  • Uma opção sem score vale 0. Na múltipla escolha, somam-se as pontuações de todas as opções marcadas; na matriz, a pontuação da coluna escolhida em cada linha.
  • O cálculo fica sem valor enquanto uma entrada está sem resposta ou oculta, depois de uma divisão por zero ou quando falta uma referência. get_response informa o motivo no error do cálculo.
  • Uma pergunta de escolha sem nada marcado conta como não respondida, e não como 0. Para extras opcionais que entram no preço, deixe a pergunta obrigatória e inclua uma opção como "Sem extras" com pontuação "0".

Exemplo

A inscrição em workshop calcula o valor da reserva: cada opção de ingresso tem um score (o preço), e cada opção de "número de pessoas" também (a quantidade). O cálculo multiplica os dois.

Workshop registration: calculations

[
    {
        "id": "01990000-0000-7000-8000-000000000131",
        "name": "Total price",
        "decimals": 2,
        "expression": {"type":"multiply","args":[{"type":"option_score","ref":"01990000-0000-7000-8000-000000000103"},{"type":"option_score","ref":"01990000-0000-7000-8000-000000000104"}]}
    }
]

Selecione o texto para copiá-lo.

A pesquisa de feedback de clientes tira a média de uma matriz: soma as pontuações das três linhas e divide por 3, com uma casa decimal.

Referências de resposta

Um nó answerToken mostra uma resposta ou o resultado de um cálculo dentro de um texto formatado:

Agradecimento seguido do nome que a pessoa digitou

{
    "type": "paragraph",
    "content": [
        { "type": "text", "text": "Thanks, " },
        {
            "type": "answerToken",
            "attrs": { "source": "answer", "ref": "01990000-0000-7000-8000-000000000001", "fallback": "there" }
        },
        { "type": "text", "text": "!" }
    ]
}

Selecione o texto para copiá-lo.

  • source é answer, com o ID de uma pergunta em ref, ou calculation, com o ID de um cálculo.
  • fallback aparece quando ainda não há nada para mostrar. É obrigatório e pode ser uma string vazia. Escreva o texto em volta do token de um jeito que continue fazendo sentido com o fallback, como "Preço estimado (USD): " com o fallback "a confirmar".
  • A resposta referenciada precisa vir de uma pergunta anterior, e nunca de um texto informativo. Um cálculo referenciado só pode usar perguntas anteriores.
  • A tela de boas-vindas vem antes de todas as perguntas, então não pode mostrar respostas. A tela final pode mostrar qualquer resposta ou cálculo.

As respostas referenciadas aparecem como quem responde as vê: rótulos das opções, várias opções separadas por vírgulas, consentimento como Yes ou No (Sim ou Não em um formulário em português) e a nota seguida do comentário. Um cálculo referenciado mostra exatamente o número de casas de decimals, como 120.00, sem separador de milhar nem símbolo de moeda; escreva o símbolo no texto em volta.

A tela final da inscrição em workshop cumprimenta a pessoa pelo nome e mostra o preço:

Workshop registration: ending

{
    "title": {"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"You are booked in, "},{"type":"answerToken","attrs":{"source":"answer","ref":"01990000-0000-7000-8000-000000000101","fallback":"friend"}},{"type":"text","text":"!"}]}]},
    "description": {"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Total to pay on the day (USD): "},{"type":"answerToken","attrs":{"source":"calculation","ref":"01990000-0000-7000-8000-000000000131","fallback":"to be confirmed"}},{"type":"text","text":"."}]}]}
}

Selecione o texto para copiá-lo.

Pronto para criar?
Conecte seu assistente.

Escolha o assistente que você usa, entre no trulyform e peça o formulário de que precisa.

Escolher assistente