Ir al contenido

Variables

Una variable es un recipiente con nombre donde guardas un dato para usarlo más adelante. Son el mecanismo con el que la información viaja entre actividades: una actividad guarda su resultado en una variable, y otra actividad lo lee desde ahí.

Sin variables, cada actividad estaría aislada. Con variables, puedes leer un correo, extraer su asunto, transformarlo y escribirlo en un Excel, encadenando el dato de un paso al siguiente.

panel de variables en la parte inferior, con varias variables, su tipo y valor inicial.

Las variables se gestionan en la pestaña Variables del panel inferior. Cada variable tiene:

  • Nombre: cómo la referencias en las expresiones.
  • Tipo: qué clase de dato contiene (texto, número, tabla…). Ver Tipos de datos.
  • Valor inicial (opcional): una expresión con el valor con que arranca, por ejemplo 0, "pendiente" o newList().
  • Descripción (opcional): para qué sirve, para quien lea el playbook después.

Todo se edita directamente en la tabla, celda por celda.

  1. En la pestaña Variables, pulsa + Añadir variable. Aparece una fila nueva (variable1, de tipo string) con el cursor en el nombre.
  2. Escribe el nombre (ver reglas abajo) y pulsa Enter.
  3. Elige el tipo en el selector. Tiene buscador, y Tipo compuesto… arma tipos como List<string> o Dictionary<string,object>.
  4. Opcionalmente, escribe un valor inicial y una descripción.

fila de creación de variable con nombre, selector de tipo y valor inicial.

Para eliminar una variable, usa el icono de papelera al final de su fila o Supr. Clic derecho sobre la fila → Buscar referencias te muestra dónde se usa en el playbook.

ReglaBienMal
Sin espaciosnumeroFacturanumero factura
Sin símbolosclienteIdclienteId#
Empieza con letra o _total, _temp1total
No es una palabra reservada de C#claseclass
Único en el playbook (entre variables y argumentos)totaldos total
Distingue mayúsculastotal ≠ Total—

Si el nombre no es válido, el Designer te lo dice y conserva el anterior.

Las actividades que producen un dato tienen, al final del panel de Propiedades, la sección Salida con el campo Guardar resultado en. Ahí escribes el nombre de la variable donde quieres guardar el resultado; a la derecha ves el tipo que devuelve la actividad. El campo te sugiere las variables que ya existen.

Si el nombre que escribes aún no está declarado, el campo lo marca como variable nueva: pulsa Ctrl+Shift+V para declararla con el tipo de la salida.

Ejemplo: una actividad HTTP GET que guarda su resultado en respuesta. En las actividades siguientes puedes leer:

respuesta.StatusCode // 200
respuesta.Ok // true
respuesta.Body // cuerpo de la respuesta

panel de propiedades de Get Text con su salida «Guardar resultado en» apuntando a la variable firstParagraph.

Después de una ejecución, la sección Vista previa (última ejecución) de Propiedades muestra el valor que produjo la actividad, sin salir del Designer.

En cualquier campo con ƒx, escribe una expresión que use la variable:

correo.Subject
"Hola " + nombreCliente
total > 1000

Recuerda: un texto fijo va entre comillas ("Hola"); sin comillas, el Designer lo lee como el nombre de una variable.

Algunas actividades declaran variables por ti. La más común es For Each: recorre una colección (items) y, en cada vuelta, pone el elemento actual en la variable que nombras en itemVariable. Opcionalmente, indexVariable guarda la posición (empezando en 0).

For Each items = correos itemVariable = correo
└─ Cuerpo:
Log message = "Procesando: " + correo.Subject

Aquí correo existe solo dentro del bucle y cambia en cada vuelta. No necesitas declararlo en el panel: lo declara el For Each.

  • Las variables que declaras pertenecen al playbook donde las creaste.
  • Si invocas otro playbook con Invoke Playbook, no comparten variables. En su lugar:
    • Le pasas datos a sus entradas.
    • Recibes datos de sus salidas.

Esto mantiene cada playbook aislado y reutilizable: un playbook invocado no puede “ensuciar” por accidente las variables del que lo llamó.

Al elegir el playbook en Invoke Playbook, el panel de Propiedades muestra un campo por cada entrada que declara (con su valor por defecto, si lo tiene) y un campo por cada salida, donde escribes la variable que recibirá el valor.

Necesito…Cómo
Un contadorVariable int con valor inicial 0; en cada vuelta, Set Variable con contador + 1
Acumular en una listaVariable List<string> con valor inicial new List<string>(); en cada vuelta, la actividad Agregar a la lista
Una bandera (sí/no)Variable boolean con valor inicial false; la pones en true cuando ocurre algo
Construir un textoVariable string; concaténale texto + "línea" + nl()

Además de tus variables, cada ejecución expone un conjunto de variables del sistema de solo lectura con información del proceso en curso. No las declaras (ya están disponibles) y las lees en cualquier expresión anteponiendo $. El autocompletado las lista.

VariableContiene
$system_playbook_nameEl nombre del playbook que se está ejecutando (cambia dentro de un playbook invocado).
$system_invoke_depthLa profundidad de invocación: 0 en el playbook principal, 1 en el primer invocado…
$system_playbook_started_atCuándo empezó este playbook.
$system_run_started_atCuándo empezó la ejecución completa (igual en toda la cadena de invocaciones).
$system_host_nameEl nombre del equipo donde se ejecuta.
$system_os_userEl usuario de Windows que ejecuta el robot.
$system_execution_idEl identificador de esta ejecución (el mismo que ves en Zoan Cloud).
$system_process_nameEl nombre del proceso que se está ejecutando.
$system_process_versionLa versión del proceso publicado.
$system_process_idEl identificador del proceso.
$system_environment_idEl identificador del ambiente donde se ejecuta.
$system_entryEl playbook de entrada (el que arranca la ejecución).
$system_instance_idEl caso del flujo que lanzó esta ejecución.
$system_step_idEl paso del flujo que lanzó esta ejecución.
$system_idempotency_keyLa clave de idempotencia del paso: la misma en sus reintentos automáticos. Sirve para no repetir trabajo en un sistema externo; ver Robots dentro de un flujo.
$system_business_keyLa clave de negocio del caso del flujo (por ejemplo, el número de factura).

Las cuatro últimas solo tienen valor cuando un paso de un flujo lanza la ejecución; si no, están vacías.

Por ejemplo, para registrar qué proceso y ejecución generaron un dato, o cuánto lleva la ejecución:

Log message = "Procesado por " + $system_process_name + " v" + $system_process_version + " (exec " + $system_execution_id + ")"
Log message = "Segundos transcurridos: " + (now() - $system_run_started_at).TotalSeconds
SíntomaCausaSolución
«El nombre «x» no existe en este contexto»Usaste una variable que no está declarada, o el nombre no coincideDeclárala (Ctrl+Shift+V desde el campo) o corrige el nombre: Total y total son distintas
«Variable de destino no válida»La salida apunta a una variable sin declarar o a una variable del sistemaDeclara la variable o elige otro nombre
El valor “no se guarda” entre actividadesLa actividad no tenía Guardar resultado en configuradoEscribe el nombre de la variable en la sección Salida
Se guarda el nombre en vez del valorPusiste el nombre de la variable entre comillasQuita las comillas: cliente, no "cliente"