# Actions Vizir

# Fonction javascript

# Exécuter du code javascript depuis un workflow

Vous pouvez décider d'exécuter directement du code javascript dans votre workflow. Cela vous permet de gagner du temps si vous savez écrire du code !

TIP

Vous pouvez utiliser l'action function directement dasn les workflow mais vous pouvez également l'utiliser dans une action. Cela vous permettra de modifier les données reçues de l'API avant la suite du workflow.

Dans la fonction l''ensemble des attributs de l'utilisateur sont accessible directement via la notation {attributeName} avec une double {{.

Edit function

WARNING

N'oubliez pas d'indiquer le return de la fonction ! Il est conseiller de retourner des objets sous le format JSON.

TIP

Si vous souhaitez modifier les données reçues via API dans l'étape précédente du workflow, n'oubliez pas de passer ces données dans les attributs du répondant avant de les utiliser dans les actions.

Ensuite vous pouvez sauvegarder la réponse dans la mémoire de votre chatbot: function response

Voici un exemple de fonction qui remplacera le valeurs récupérées dans votre Excel depuis € vers k€.

// Il est possible d'utiliser les commentaires, c'est même conseillé 😊
let chiffre_affaire = '{{obj}}';
ca_k_euro =  parseInt(chiffre_affaire) /1000
return {ca: ca_k_euro + 'k€' }

# Mettre à jour une cellule dans un Excel avec une fonction javascript

Pour mettre à jour une cellule dans un Excel (ou Gsheet) depuis votre chatbot, vous devez récupérer les valeurs de la plage de cellules que vous souhaitez mettre à jour, mettre à jour la valeur avec l'action fonction javascript puis mettre à jour la plage de cellules.

Voici le workflow: Update Cell in Excel

Et voici le code de la fonction. Vous pouvez l'utiliser dans votre workflow. Veillez bien à renseigner ces valeurs avec vos propres valeurs:

  • key: Titre de la colonne de clé d'identification unique de votre ligne dans Google Sheet

  • keyValue: valeur de la clé d'identification unique de votre ligne dans Google Sheet

  • newValue: Nouvelle valeur pour la cellule que vous souhaitez modifier

  • updateColTitle: Titre de la colonne que vous souhaitez mettre à jour dans la ligne qui sera trouvées.

  • data contient les valeurs reçue via la première action du getDataRange qui est sauvegardé dans tag.values: values

{{tag.values}}
let key = "{{key}}"
let keyValue  = "{{keyValue}}"
let value = "{{newValue}}"
let updateKey = "{{updateColTitle}}"

let data = {{tag.values}}

let indexColKey = data[0].findIndex(col => col == key )
let indexColValue = data[0].findIndex(col => col == updateKey )

let indexLine = data.findIndex(line => line[indexColKey] == keyValue )

data[indexLine][indexColValue] = value

return data

Il faut ensuite sauvegarder la réponse dans la mémoire de votre chatbot: tag.dataFormated

Enfin vous pouvez utiliser ces informations pour mettre à jour la valeur d'une cellule via l'action updateRangeValues d'Excel. Voici le body de l'action:

{
    "range": "data!A1:C11",
    "majorDimension": "ROWS",
     "values": "{{tag.dataFormated.dataFormated}}"
}