SharePoint: Creación Expedientes
En mi larga experiencia en proyectos con tecnología SharePoint, me he encontrado en muchas ocasiones que no se explota todo el potencial de esta herramienta y una de las funcionalidades que se ha utilizado menos de lo que se debería es la de Conjunto de Documentos (Document Set's para los que lo tengan configurado en inglés).
Esta funcionalidad la comparo con lo que eran antiguamente los expedientes, aquellas carpetas de cartón, donde se rellenaban con documentos con una serie de características y luego la etiquetaban para identificar cuál era su contenido.
De una forma figurada, todos aquellos atributos que se escribían en la etiqueta, eran heredados por todos los documentos que esta contenía: Facturas 2003, Caso 210/23, Juicio 123/2015, etc…
A nivel digital, para simular este comportamiento, lo que se hacía (y aún se hace en muchas ocasiones) es poner un nombre a la carpeta con toda la información para identificarla como expediente. El inconveniente, que tienes que al buscar, encuentras la carpeta pero después tienes que navegar dentro de ella para encontrar el archivo que te interesa.
¿Qué es lo que te permite el Conjunto de Documentos de SharePoint? Crear unos atributos a esta carpeta digital que luego todos los documentos que esta contiene hereda y de esa forma, con un filtro sencillo, cuando buscas por cualquier atributo de éstos, devuelve como resultado la carpeta y todos los documentos que esta contiene. Eso significa que no es necesario navegar primero a la carpeta y luego buscar todos los archivos que esta contiene.
En este artículo crearemos un pequeño ejemplo de cómo podemos crear expedientes para organizar los archivos mediante tipos de contenido, conjunto de documentos y atributos.
Este caso emularemos una empresa con varias oficinas donde cada una almacena en una carpeta los documentos y cada uno de éstos tiene como atributos a que Zona y Oficina pertenece. Para ello utilizaremos los Tipos de Contenido, los Conjuntos de Documentos y las propiedades asociadas.
Recomendado por LinkedIn
Para aprovechar el potencial de SharePoint, vamos integrar los datos de las columnas y atributos de con el fichero Excel, dónde podremos leerlas y también modificarlas desde la propia hoja de datos:
Este es el código VBA para incluir en el Excel para poder obtener y almacenar los datos en las columnas de SharePoint
Public Function DocProp(Info_needed As String) As Varian
Application.Volatile
DocProp = ThisWorkbook.BuiltinDocumentProperties(Info_needed).Value
End Function
Public Function DocPropCustom(Info_needed As String) As Variant
Application.Volatile
DocPropCustom = ThisWorkbook.CustomDocumentProperties(Info_needed).Value
End Function
Public Function DocPropCT(Info_needed As String) As Variant
Application.Volatile
On Error GoTo ErrorDocPropCT
DocPropCT = IIf(ThisWorkbook.ContentTypeProperties(Info_needed).Value = "", "", ThisWorkbook.ContentTypeProperties(Info_needed).Value)
GoTo FinDocPropCT
ErrorDocPropCT:
Debug.Print Application.ActiveCell.Worksheet.Name + " " + Info_needed + " " + Err.Description
FinDocPropCT:
End Function
Public Function DocPropMatrixCT(Info_needed As String, i As Integer) As Variant
Application.Volatile
On Error GoTo ErrorDocMatrixCT
DocPropMatrixCT = ThisWorkbook.ContentTypeProperties(Info_needed).Value(i)
GoTo FinDocMatrixCT
ErrorDocMatrixCT:
Debug.Print Application.ActiveCell.Worksheet.Name + " " + Info_needed + " " + Err.Description
FinDocMatrixCT:
End Function
Public Function SetDocPropCT(Info_needed As String, valor As Variant) As Variant
Application.Volatile
On Error GoTo SetDocPropCTError
If Not IsError(valor) Then
If ThisWorkbook.ContentTypeProperties(Info_needed).Value <> valor Then
' Debug.Print Info_needed
If TypeName(valor) = "Range" Or TypeName(valor) = "Cell" Then
ThisWorkbook.ContentTypeProperties(Info_needed).Value = valor.Value
Else
ThisWorkbook.ContentTypeProperties(Info_needed).Value = valor
End If
End If
End If
SetDocPropCT = ThisWorkbook.ContentTypeProperties(Info_needed).Value
GoTo FinSetDocPropCT
SetDocPropCTError:
Debug.Print Application.ActiveCell.Worksheet.Name + " " + Info_needed + " " + Err.Description
FinSetDocPropCT:
End Functiont