Saltar al contenido

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

Aprende a crear barras de progreso visuales en Notion usando fórmulas con if(), slice(), round() y format().


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 completadas.
  1. Cuatro funciones diferentes:
    • if() como condicional
    • slice() para pintar la barra
    • round() para redondear cifras
    • format() para convertir números a texto

if()

Comprueba si se cumple una condición. Necesita tres argumentos:

  1. Una expresión que evalúa si un valor es true o false
  1. El valor si es true
  1. El valor si 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. Tres argumentos:

  1. El string original
  1. El punto de origen (primer carácter = 0)
  1. El punto final (opcional)

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

Se usa doblemente: para la barra rellena y para la parte vacía.

round()

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

round(1.3)1

format()

Convierte un número en texto (string).

format(20)"20"

Caracteres para la barra de progreso

  • 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"), 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 verifica si "Completadas" es mayor o igual a 1 (100%). Si se cumple, muestra un check.

Si es menor al 100% → barra de progreso

Parte rellena:

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

Multiplica el porcentaje por 10 y redondea. 80% → 8 caracteres.

Parte vacía:

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

Resta el porcentaje a 1 para la parte no completada.

Mostrar el porcentaje en números:

Usa if() para mostrar "0" si no hay progreso. Si hay, multiplica por 100, redondea, convierte a texto y añade %.