Saltar al contenido

5.04. Bola extra: Cómo crear barras de progreso en Notion

Requisitos previos

Para crear barras de progreso en Notion necesitas:

  1. Mínimo dos bases de datos relacionadas entre sí. Usarás esta relación para extraer el porcentaje de tareas asociadas a un proyecto que estén completadas.
  2. Cuatro funciones diferentes:
    • if() como condicional
    • slice() para pintar la barra
    • round() para redondear cifras
    • format() para convertir números a texto

if()

Esta función comprueba si se cumple una condición concreta. Necesita tres argumentos:

  1. Una expresión que evalúa si un valor es cierto (true) o falso (false)
  2. El valor a devolver si el resultado es true
  3. El valor a devolver si el resultado es false

Sintaxis: [comparación] ? [qué ocurre si es true] : [qué ocurre si es false]

slice()

Devuelve el segmento de un string que le indiques. Toma tres argumentos:

  1. El string original
  2. El punto de origen (siendo el primer carácter 0)
  3. El punto final (opcional)

Ejemplo: slice("manzana, pera, sandía, kiwi", 9, 21)pera, sandía

Se utilizará doblemente en la fórmula: para pintar la barra rellena según el porcentaje completado y para añadir la parte vacía.

round()

Redondea un número decimal a su entero más cercano.

Ejemplo: round(1.3)1

format()

Convierte un número en texto (string).

Ejemplo: format(20)"20"

Esta función es necesaria cuando necesitas que un número sea interpretado como texto para concatenar cadenas.

Caracteres para la barra de progreso

Necesitas dos caracteres con estados diferentes:

  • Completado: █ (o ▓)
  • Sin completar:

Construcción de la fórmula completa

Con los elementos configurados (dos bases de datos relacionadas, propiedad Rollup con porcentaje llamada "Completadas", y caracteres elegidos), la fórmula es:

(prop("Completadas") >= 1) ? "✅" : (slice("▓▓▓▓▓▓▓▓▓▓", 0, round(prop("Completadas") * 10)) + slice("░░░░░░░░░░", 0, round((1 - prop("Completadas")) * 10)) + " " + if(prop("Completadas") == 0, "0", format(round(prop("Completadas") * 100))) + "%")

Desglose de la fórmula

Si el porcentaje es 100% → check (✅)

El condicional inicial verifica si "Completadas" es mayor o igual a 1 (equivalente al 100%). Si se cumple, muestra un check.

Si el porcentaje es menor al 100% → barra de progreso

Parte rellena:

slice("▓▓▓▓▓▓▓▓▓▓", 0, round(prop("Completadas") * 10))

Utiliza slice() con el string de caracteres rellenos. El punto final es el resultado de multiplicar el porcentaje por 10 y redondearlo. Ejemplo: 80% → 8 caracteres.

Parte vacía:

slice("░░░░░░░░░░", 0, round((1 - prop("Completadas")) * 10))

Sigue la misma lógica pero restando el porcentaje a 1 para extraer la parte no completada.

Mostrar el porcentaje en números:

Un espacio separa la barra del porcentaje. Usa if() para mostrar "0" si no hay tareas completadas. Si hay progreso, multiplica por 100, redondea con round(), convierte a texto con format() y añade el símbolo % al final.

¿Te ha resultado útil este contenido?