> ## Documentation Index
> Fetch the complete documentation index at: https://mozdocs.mozartfintech.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Bloque de Script

El bloque "Script" te permite ejecutar código Javascript.

<Info>Este bloque no te permite crear un bloque visual personalizado</Info>

<Frame>
  <img src="https://mintlify.s3-us-west-1.amazonaws.com/mozartfintech/images/blocks/logic/code.png" width="600" alt="Bloque de código" />
</Frame>

<Info>
  Las variables en el script no se analizan, se evalúan. Por lo tanto, deben tratarse como si fueran variables reales de Javascript.

  Debes escribir `console.log({{Mi variable}})` en lugar de `console.log("{{Mi variable}}")`
</Info>

## Función `setVariable`

Si deseas establecer el valor de una variable con Javascript, el [bloque de Establecer variable](./set-variable) es más apropiado en la mayoría de los casos.

Sin embargo, si deseas establecer variables en un bloque de Script, puedes usar la función `setVariable` en tu script:

```js
if({{Mi variable}} === 'foo') {
  setVariable('Mi variable', 'bar')
} else {
  setVariable('Mi variable', 'otro')
}
```

La función `setVariable` solo está disponible en scripts ejecutados en el servidor, por lo que no funcionará si la opción `¿Ejecutar en el cliente?` está marcada.

## Limitaciones en scripts ejecutados en el servidor

Debido a que el script se ejecuta en un entorno aislado y seguro, existen algunas limitaciones.

* Funciones globales como `console.log`, `setTimeout`, `setInterval`, etc. no están disponibles

* El comportamiento de la función `fetch` es ligeramente diferente de la función `fetch` nativa. Solo tienes que omitir la parte `await response.text()` o `await response.json()`.

  ```js
  // ❌ Esto lanza un error
  const response = await fetch('https://jsonplaceholder.typicode.com/todos/1')
  const data = await response.text()

  // ✅ Esto funciona
  const data = await fetch('https://jsonplaceholder.typicode.com/todos/1')
  ```

  `response` siempre será una `string` incluso si la solicitud devuelve un objeto JSON. Si sabes que la respuesta es un objeto JSON, puedes analizarlo usando `JSON.parse(response)`.

  ```js
  // ❌ Esto lanza un error
  const response = await fetch('https://jsonplaceholder.typicode.com/todos/1')
  const data = await response.json()

  // ✅ Esto funciona
  const response = await fetch('https://jsonplaceholder.typicode.com/todos/1')
  const data = JSON.parse(response)
  ```

* No puedes usar `import` o `require` para importar bibliotecas externas

* No tienes acceso a las APIs del navegador como `window`, `document`, `localStorage`, etc. Si necesitas usar las APIs del navegador, debes marcar la opción `¿Ejecutar en el cliente?` para que el script se ejecute en el navegador del usuario.

## Ejemplos

### Recargar página

```js
window.location.reload()
```

### Redirigir si una variable tiene un valor específico

```js
if({{Categoría}} === 'calificado') {
  window.location.href = 'https://mi-sitio.com'
}
```
