¡Hola, entusiasta de la automatización! Si alguna vez has trabajado con SharePoint y Power Automate, es probable que hayas experimentado esa mezcla de admiración y frustración. Admiración por la capacidad de crear columnas de cálculo que simplifican la gestión de datos, y frustración cuando esas columnas, aparentemente sencillas, se vuelven un desafío para tus flujos de Power Automate. No te preocupes, no estás solo. Hoy desvelaremos el misterio y te mostraremos una estrategia infalible para acceder a los valores calculados de tus listas de SharePoint. ¡Prepárate para llevar tu automatización al siguiente nivel!
🤔 El Enigma de las Columnas de Cálculo en Power Automate
Las columnas calculadas son una joya en SharePoint. Te permiten definir fórmulas complejas que procesan datos de otras columnas para mostrar un resultado dinámico. Por ejemplo, puedes tener el „Estado del Proyecto” automáticamente determinado por las fechas de inicio y fin, o un „Costo Total” que suma varios elementos. El problema surge cuando intentas recuperar estos valores calculados directamente en Power Automate.
Cuando usas acciones estándar como „Obtener elemento” (Get Item) o „Obtener elementos” (Get Items), Power Automate, por defecto, no siempre te proporciona el valor *renderizado* de la columna calculada. A menudo, lo que obtienes es el esqueleto de la fórmula, un valor nulo, o una representación incompleta. Esto se debe a cómo SharePoint procesa estos campos: la columna de cálculo es dinámicamente generada por el servidor cuando se visualiza el elemento, no es un valor almacenado estáticamente como los demás. ¡Pero hay una solución elegante!
💡 La Estrategia Infalible: El Poder de la REST API de SharePoint
La clave para resolver este enigma reside en emplear la API REST de SharePoint, que es una interfaz poderosa para interactuar con los datos de SharePoint de manera programática. Afortunadamente, Power Automate incluye una acción „Enviar una solicitud HTTP a SharePoint” (Send an HTTP request to SharePoint) que nos permite precisamente eso. Con esta acción, podemos solicitar el elemento de la lista de una forma que fuerza a SharePoint a renderizar y devolver el valor calculado.
Este método es robusto y garantiza que siempre obtengas el valor exacto que verías en la interfaz de SharePoint. ¡Vamos a desglosarlo!
⚙️ Paso a Paso: Obteniendo tus Columnas de Cálculo con Power Automate
Parte 1: Prepara tu Lista de SharePoint
Antes de sumergirnos en Power Automate, necesitamos una lista de SharePoint con una columna calculada. Consideremos un escenario común: una lista de „Tareas del Equipo” con una columna de cálculo para el „Estado de Vencimiento”.
- Crea una nueva lista de SharePoint llamada „Tareas del Equipo”.
- Añade las siguientes columnas (si no existen ya):
- „Nombre de la Tarea” (Texto de una sola línea)
- „Fecha de Vencimiento” (Fecha y hora)
- „Completada” (Sí/No)
- Crea una nueva columna de cálculo llamada „Estado de Vencimiento”. Elige el tipo de datos „Calculado (el valor se calcula a partir de otras columnas)”.
- Introduce la siguiente fórmula (ajusta los nombres de las columnas según sea necesario):
=SI([Completada]=VERDADERO, "Completada", SI([Fecha de Vencimiento]<HOY(),"Vencida","Pendiente"))
Esta fórmula mostrará „Completada” si la tarea se ha finalizado, „Vencida” si la fecha límite ha pasado, o „Pendiente” en caso contrario. Elige „Texto de una sola línea” como tipo de dato para el resultado de la fórmula.
- Añade algunos elementos de prueba a la lista para ver cómo funciona el „Estado de Vencimiento”.
Parte 2: Creando tu Flujo de Power Automate
Ahora, es el momento de construir el flujo que recuperará nuestro valor calculado.
1. Crea un nuevo flujo:
- Ve a Power Automate y selecciona „Nuevo flujo” > „Flujo de nube instantáneo”.
- Dale un nombre descriptivo, como „Obtener Estado de Vencimiento”.
- Elige „Disparar un flujo manualmente” para fines de prueba, o „Cuando se crea o modifica un elemento” para un flujo más dinámico.
2. Añade la acción „Obtener elemento” (opcional, para demostración):
- Si elegiste un disparador manual, necesitarás seleccionar el sitio de SharePoint y la lista. Si elegiste „Cuando se crea o modifica un elemento”, ya tendrás el ID del elemento.
- Agrega una acción „Obtener elemento” de SharePoint.
- Configura el „Dirección del sitio” y „Nombre de la lista„.
- En „Id.”, selecciona el ID del elemento del disparador (o introdúcelo manualmente si es un flujo manual y conoces un ID de prueba).
- Observación: Si intentas acceder a la columna calculada aquí, verás que no se devuelve su valor renderizado, sino la fórmula o un valor nulo.
3. La acción crucial: „Enviar una solicitud HTTP a SharePoint„:
- Agrega una nueva acción y busca „Enviar una solicitud HTTP a SharePoint„.
- Dirección del sitio: Selecciona tu sitio de SharePoint.
- Método: GET
- Uri: Aquí viene la parte importante. Debes construir una URI que apunte al elemento específico y solicite la columna calculada.
El formato general es:
_api/web/lists/GetByTitle('NombreDeTuLista')/items(@{IDdelElemento})?$select=NombreInternoDeTuColumnaCalculada
Para nuestro ejemplo, si el ID del elemento proviene del disparador, se vería así:
_api/web/lists/GetByTitle('Tareas del Equipo')/items(@{triggerOutputs()?['body/ID']})?$select=Estado_x0020_de_x0020_Vencimiento
Un detalle fundamental es el „Nombre Interno” de la columna. SharePoint a menudo reemplaza los espacios y caracteres especiales con
_x0020_
u otros códigos. Para encontrar el nombre interno, ve a la configuración de la lista, haz clic en la columna y observa el final de la URL en tu navegador (después deField=
). Por ejemplo, „Estado de Vencimiento” podría ser „Estado_x0020_de_x0020_Vencimiento”. - Encabezados:
Accept
:application/json;odata=nometadata
4. Procesar la respuesta JSON con „Analizar JSON„:
- La acción HTTP devuelve un objeto JSON. Necesitamos „parsearlo” para extraer el valor.
- Agrega una acción „Analizar JSON„.
- Contenido: Selecciona el „Cuerpo” de la acción „Enviar una solicitud HTTP a SharePoint„.
- Esquema: Haz clic en „Generar a partir de muestra” y pega una muestra del JSON que esperas. Para obtener una muestra, puedes ejecutar el flujo una vez, copiar el cuerpo de la salida de la acción HTTP, y luego pegarlo aquí.
Una muestra común para una columna calculada de texto podría ser:
{ "type": "object", "properties": { "Estado_x0020_de_x0020_Vencimiento": { "type": "string" } } }
Si la columna calculada es numérica o de fecha, el tipo cambiará a „integer” o „string” respectivamente. Incluso las fechas se representan como cadenas en JSON.
5. Utiliza el valor extraído:
- Ahora, en cualquier acción posterior, podrás acceder al valor calculado de forma dinámica.
- Por ejemplo, agrega una acción „Componer” (Compose) y selecciona „Estado de Vencimiento” de la salida de „Analizar JSON„. Ejecuta el flujo y verás el valor correcto.
- ¡Ahora puedes usar este valor para enviar un correo electrónico, actualizar otra columna, o desencadenar otras acciones basadas en el cálculo!
Parte 3: Consideraciones Avanzadas y Mejores Prácticas ✔️
- Nombres Internos: Siempre verifica el nombre interno de tu columna calculada. Este es el detalle más común que provoca errores.
- Manejo de Errores: ¿Qué pasa si el elemento no existe o la lista no se encuentra? Puedes configurar „Ejecutar después de” para gestionar errores en la acción „Enviar una solicitud HTTP”.
- Tipos de Datos: Asegúrate de que el esquema JSON en la acción „Analizar JSON” coincida con el tipo de datos de la columna calculada. Para números, usa
"type": "number"
o"type": "integer"
. Para fechas, generalmente es"type": "string"
. - Filtrado y Seleccionado: Para mejorar el rendimiento, utiliza
$select
para especificar solo las columnas que necesitas, y$filter
si recuperas múltiples elementos con condiciones. - Alternativas (y por qué no las usamos): A veces, es posible recrear la fórmula directamente en Power Automate con expresiones. Sin embargo, esto puede ser propenso a errores, difícil de mantener y no siempre reproduce fielmente la lógica de SharePoint, especialmente con funciones de fecha o de búsqueda. La API REST es la ruta más segura.
⚠️ Solución de Problemas Comunes
- Error de „Acceso Denegado” en la solicitud HTTP: Asegúrate de que la conexión de SharePoint que usa tu flujo tenga los permisos adecuados para leer elementos de la lista.
- JSON Inválido: Revisa el esquema de tu acción „Analizar JSON„. Un error común es que el tipo de datos en el esquema no coincide con el tipo de datos real devuelto por la API. Siempre es buena idea „Generar a partir de muestra” después de una ejecución exitosa de la solicitud HTTP.
- Columna no encontrada (404): Confirma que el nombre interno de la columna calculada en la URI es correcto. Recuerda los
_x0020_
.
🗣️ Una Opinión Basada en la Realidad de la Automatización
En mi experiencia, la capacidad de Power Automate para interactuar con la API REST de SharePoint es una de sus características más liberadoras. Aunque el concepto de „Enviar una solicitud HTTP” pueda parecer intimidante al principio para los usuarios de desarrollo sin código (low-code), dominarlo abre un universo de posibilidades. Este pequeño truco para obtener columnas de cálculo es un ejemplo perfecto. No solo garantiza la precisión de los datos en tus flujos, sino que también refuerza la idea de que Power Automate es una herramienta increíblemente flexible, capaz de manejar complejidades sin requerir conocimientos profundos de programación tradicional. Es una inversión de tiempo mínima que rinde grandes dividendos en la fiabilidad y potencia de tus soluciones automatizadas.
🎉 Conclusión: Desbloqueando el Potencial Completo
¡Felicidades! Has dado un paso gigante en tu viaje de automatización. Al dominar la recuperación de columnas de cálculo mediante la API REST de SharePoint en Power Automate, no solo has resuelto un problema técnico común, sino que también has ampliado tu conjunto de habilidades de desarrollo sin código. Ahora puedes crear flujos más inteligentes, que toman decisiones basadas en la lógica compleja definida en SharePoint, sin necesidad de duplicar esa lógica en tu flujo.
Anímate a explorar más las capacidades de la API REST de SharePoint. Con cada pequeña victoria como esta, te acercas más a convertirte en un verdadero arquitecto de la automatización. ¡El futuro es ahora, y tú estás a cargo!