5.04. Bola extra: Cómo crear barras de progreso en Notion
Requisitos previos
Para crear barras de progreso en Notion necesitas:
- 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.
- Cuatro funciones diferentes:
if()como condicionalslice()para pintar la barraround()para redondear cifrasformat()para convertir números a texto
if()
Esta función comprueba si se cumple una condición concreta. Necesita tres argumentos:
- Una expresión que evalúa si un valor es cierto (
true) o falso (false) - El valor a devolver si el resultado es
true - 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:
- El string original
- El punto de origen (siendo el primer carácter 0)
- 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?