# Piping Javascript

En utilisant le piping JavaScript, il est possible de transmettre une valeur qui sera générée à l’aide de n’importe quel JavaScript de votre choix.

Une fonction spéciale NGSJS peut être configurée pour renvoyer une sortie de votre code JavaScript ; cette sortie peut ensuite être stockée dans une valeur par défaut afin de l’afficher et de la stocker dans un champ

{% hint style="warning" %}
La sortie ne sera évaluée que pendant le mode de soumission ; si vos réponses au sondage ont été soumises et que vous êtes en mode modification ou en mode reprise, la valeur sera la valeur d’origine qui avait été enregistrée avant la reprise ou la modification des réponses&#x20;
{% endhint %}

## ➕Exemple de somme de champs simples

Vous trouverez ci-dessous les étapes pour ajouter un JavaScript personnalisé qui additionne deux champs. Vous pouvez modifier le code pour obtenir toute sortie souhaitée à stocker. Notez que si vous avez seulement besoin d’une somme, vous pouvez envisager d’utiliser l’existant [Champ numérique](/fr/form-management/form-designer/answers/answer-types/numeric-answer-field.md) type à la place\
\
Créez une question avec 3 champs

<figure><img src="/files/b9ac9f14c552fcce7017c932eab0574af8da5917" alt=""><figcaption></figcaption></figure>

Une fois créé, pour chaque champ impliqué dans le calcul, définissez dans ses propriétés de réponse son alias de Pipe ; celui-ci sera utilisé ultérieurement pour rechercher la valeur actuelle.\
\
![](/files/625d518a38e6530e37fb559e310613b1d29a885a)\
\
![](/files/320cffd2abbfe3e31c030f33a97d0c51b0fdac49)\
\
\
Dans le champ Résultat, ouvrez les paramètres de réponse et, dans la valeur de texte par défaut, utilisez la fonction NGSJS pour obtenir la valeur des 2 autres champs et afficher le résultat\ <br>

<figure><img src="/files/fbb8e975a1bb97d034a826a28ab782a28c831b37" alt=""><figcaption></figcaption></figure>

```
NGSJS(return pipeContext.getAnswer('VALUEA') + pipeContext.getAnswer('VALUEB'))
```

## 👨‍💻️ pipeContext

pipeContext est un objet intégré qui vous offre les options suivantes :\
\
**Propriétés :**

* `questions: Question[]`\
  Liste des questions du sondage.
* `answers: Answer[]`\
  Liste des réponses possibles pour l’ensemble des questions.
* `respondent: Respondent`\
  Informations sur le répondant actuel.
* `panelists: Panelist[]`\
  Panelistes associés (le cas échéant).
* `respondentAnswers: RespondentAnswer[]`\
  Réponses fournies par le répondant.
* `pipeDataAttributesValues: PipeDataAttributeValue[]`\
  Attributs et valeurs de données de pipe supplémentaires.

#### Méthodes

**`getAnswer(id: string): string`**

Renvoie la ou les valeurs associées à un identifiant donné.

* Prend en charge la recherche par :
  * ID de réponse
  * ID de question
  * Alias de reporting
  * Alias de Pipe
* Comportement :
  * Si l’identifiant correspond à une **réponse textuelle**, renvoie sa valeur.
  * S’il correspond à une **question**, renvoie les réponses sélectionnées.
  * Les valeurs multiples sont renvoyées sous forme de chaîne séparée par des virgules.

**`isSelectedAnswer(id: string, value: string): boolean`**

Vérifie si une réponse spécifique est sélectionnée.

* Paramètres :
  * `id`: identifiant de question ou de réponse
  * `value`: identifiant de réponse ou valeur à vérifier
* Comportement :
  * Si `id` fait référence à une question → vérifie si la réponse spécifiée est sélectionnée.
  * Si `id` fait référence à une réponse → compare directement sa valeur.
* Renvoie :
  * `true` si la réponse est sélectionnée ou correspond
  * `false` sinon


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ngsurvey.com/fr/form-management/form-designer/piping/piping-javascript.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
