¿Qué es una plantilla de SharePoint Online?
Crear plantillas con PowerShell es muy habitual. En muchas situaciones, a la hora de plantear una estrategia de despliegue de sitios de SharePoint, necesitamos replicar las mismas configuraciones en muchos sitios y necesitamos que todas cumplan con el mismo patrón. Por ejemplo:
- Distribuir sitios por cada cliente: Queremos crear un sitio por cliente para poder compartir y trabajar con ellos bajo un mismo entorno. Disponemos de muchos clientes y con todos ellos se trabajará de la misma forma, con los mismos tipos de librerías, listas o vínculos.
En este caso tendremos que estandarizar el despliegue de artefactos (listas, librerías de documentos, links, vínculos externos, incluso el “look & feel”, etc.) para cada sitio de cliente. Para ello, SharePoint Online nos da la posibilidad de crear plantillas con PowerShell que se encargarán de configurar y desplegar aquellos artefactos personalizados.
Crear nuestra primera plantilla de SharePoint Online con PowerShell
1- Definir nuestra plantilla de SharePoint Online
En este apartado empezaremos a describir aquellos artefactos que queremos que tenga nuestra plantilla.
¡Esto implicará escribir código en JSON!
Pero no hay que preocuparse, para ello no hace falta conocer en detalle en qué consiste este idioma, simplemente entendiendo que es una forma de representar datos y ordenes que se ubicarán en un sitio concreto de una forma concreta para el sistema de creación de plantillas de SharePoint, será suficiente para generar aquellos ítems que se necesiten.
Empecemos por la estructura general del cuerpo del JSON:
"$schema": "schema.json",
"actions": [
(AQUÍ VAN LAS ACCIONES)
],
"bindata": { },
"version": 1
Como podemos ver el cuerpo es una estructura donde define varios metadatos y nos lleva a un área (en la sección “Actions”) donde añadiremos todos aquellos ítems que deseamos añadir.
2- Crear una acción en la plantilla y ejemplos de acciones
Una acción se compone por: un verbo (que declara el tipo de acción) y unos atributos (que definen la acción y sus detalles). Así pues, tenemos el siguiente ejemplo:
{
"verb": "addNavLink",
"url": "/",
"displayName": "Linia de Negocio X",
"isWebRelative": true
}
En este ejemplo observamos que la acción se declara en el apartado ““verb”: “addNavLink””, es decir, la acción “Add Navigation Link”, por lo que nos añadirá un link en el menú vertical de la parte izquierda del sitio.
Los atributos serán los siguientes después de declarar la acción. La relación o vinculación de estos dentro del entorno del “site” lo podemos ver si editamos un vínculo del menú vertical izquierda; nos aparece lo siguiente:
En esta imagen se pueden apreciar las correspondencias con la acción, la única diferencia es que a la hora de aplicar el vínculo como plantilla al site, se ha agregado un “/sites/Client2/” en el link ya que hemos descrito el atributo: “isWebRelative”: true. Es decir, que la URL que describimos parte del origen “https://empresa.sharepoint.com/sites/NuestroSitio”. Disponemos de varios tipos de acciones en el siguiente link de la web de Microsoft.
{
"verb": "createSPList",
"listName": "Lista de Valores",
"templateType": 100,
"subactions": [
{
"verb": "addSPField",
"fieldType": "Text",
"displayName": "Descripcion",
"isRequired": false,
"addToDefaultView": true
},
{
"verb": "addSPField",
"fieldType": "Number",
"displayName": "Valor",
"isRequired": false,
"addToDefaultView": true
}
]
}
3 – Crear una lista de SharePoint Online mediante una plantilla
En este ejemplo podemos observar un bloque más llamado “subactions”; en este subapartado indica todas las acciones que se deben hacer dentro de la lista. Las “sub-acciones” son crear columnas, por lo que la acción es “addSPField” (añadir un campo a la lista de SharePoint).
En este caso, tenemos dos campos: uno de tipo texto, donde pondremos la descripción del ítem y otro de tipo número que tendrá un valor.
Si decidimos crear el script entero con una lista y su correspondiente link en el menú tendremos los siguiente:{
En este ejemplo final, vemos como las dos órdenes previamente descritas están juntas; primero se crea la lista con las columnas y a posteriori se crea el link de esa lista en el menú. Entrando en detalle, nos podemos fijar que estas dos órdenes se separan por una coma y estos bloques están introducidos dentro del trozo de código que se ha explicado al principio.
"$schema": "schema.json",
"actions": [
{
"verb": "createSPList",
"listName": "Lista de Valores",
"templateType": 100,
"subactions": [
{
"verb": "addSPField",
"fieldType": "Text",
"displayName": "Descripcion",
"isRequired": false,
"addToDefaultView": true
},
{
"verb": "addSPField",
"fieldType": "Number",
"displayName": "Valor",
"isRequired": false,
"addToDefaultView": true
}
]
},
{
"verb": "addNavLink",
"url": "/Lists/Lista de Valores/",
"displayName": "Lista de Valores",
"isWebRelative": true
}
],
"bindata": { },
"version": 1
}
4- Instalar nuestra plantilla a SharePoint Online
Llegamos al paso donde el código en JSON donde se describen las ordenes se almacenará en nuestro SharePoint Online, generando un script, y se creará una plantilla con este conjunto de órdenes. Estos pasos se han de hacer por la consola de PowerShell.
Así pues, el primer paso es iniciar la consola de PowerShell y tener cargado el módulo de SharePoint Online tal como se indicó en el artículo anterior.
El siguiente paso será asignarle el contenido entero del script en una variable PowerShell; estas variables se definen con: $Nombre_de_la_variable
La asignación será la siguiente:
$site_script = '
{
"$schema": "schema.json",
"actions": [
{
"verb": "createSPList",
"listName": "Lista de Valores",
"templateType": 100,
"subactions": [
{
"verb": "addSPField",
"fieldType": "Text",
"displayName": "Descripcion",
"isRequired": false,
"addToDefaultView": true
},
{
"verb": "addSPField",
"fieldType": "Number",
"displayName": "Valor",
"isRequired": false,
"addToDefaultView": true
}
]
},
{
"verb": "addNavLink",
"url": "/Lists/Lista de Valores/",
"displayName": "Lista de Valores",
"isWebRelative": true
}
],
"bindata": { },
"version": 1
}
'
Como se puede ver la variable se llama $site_script, y el contenido del script está incluido entre comillas simples. Esta orden se pegará en la consola del script.
El siguiente paso es guardar este script en el SharePoint Online. Para ello usaremos la siguiente orden:Add-SPOSiteScript -Title "Script Site Cliente" -Content $site_script -Description "Crea items del site del cliente"
En la orden encontramos diferentes parámetros (-Title, -Content y -Description). En el parámetro -Content está la variable donde hemos volcado el script.
La respuesta de la orden es la siguiente:
Esta orden genera un ID, este se usará para crear la plantilla. La orden de creación de plantilla encapsulará este script guardado en el SharePoint en una plantilla:Add-SPOSiteDesign -Title "Plantilla Site Cliente" -WebTemplate "64" -SiteScripts "7c23b0b1-6892-49c4-835a-5b5068ee54e8" -Description "Crea items del site del cliente"
En esta orden vemos dos parámetros relevantes:
- WebTemplate: Este parámetro cuando le asignamos un “64” indica que la plantilla se podrá desplegar en los sitios de grupo. Con un “68” se podrá desplegar en los sitios de comunicación.
- SiteScripts: Es el identificador que nos ha devuelto en la ejecución de la orden anterior.
Obtendremos la siguiente respuesta en el PowerShell:
En este momento la plantilla ya estará creada y podemos disponer de esta tal como se explica en el siguiente punto.
5- Desplegar nuestra plantilla en un sitio de SharePoint Online
Las plantillas generadas las encontraremos en dos sitios:
- Creando el nuevo site: A la hora de crear un nuevo site encontramos un paso donde nos da la posibilidad de añadirle una plantilla. Justo después de la creación del site, SharePoint tratará de desplegar la plantilla.
Bajo nuestra experiencia, esta opción no consigue desplegar siempre de forma fiable la plantilla, para ello recomendamos el uso de la siguiente forma de despliegue.
- Aplicándola en un site ya existente: En el apartado de opciones de un site podemos encontrar la opción de “Diseños de Sitio”:
Esta opción nos permitirá desplegar todas las plantillas que queramos tantas veces que queramos, por tanto, podríamos desplegar diferentes tipos de artefactos estandarizados en un mismo site.
Cuando aplicamos esto, podemos observar el proceso de la plantilla sobre el site:
Finalización de la creación de la plantilla de SharePoint con PowerShell
El proceso de esta ejecución puede tardar varios minutos, por lo que es importante no desesperarse viendo el % completado.
En este ejemplo podemos ver que la plantilla ha aplicado diferentes artefactos en el site. Siguiendo el ejemplo actual se puede ver que ha desplegado:
- la lista y su correspondiente elemento de navegación
- la lista con sus columnas completamente personalizadas y adecuadas a la necesidad del negocio.
Cuando hayamos aplicado en un site la plantilla, podremos ver la lista con su respectivo vinculo en el menú izquierdo:
Como se puede ver, se ha creado una lista llamada “Lista de Valores” y esta tiene las dos columnas que hemos definido (Descripción y Valor) más la columna por defecto llamada “Título”.
En este articulo hemos relatado una forma de desplegar ítems de SharePoint de forma estandarizada para todos los sites que deseemos. Debemos tener en cuenta que solo podemos desplegar los ítems y aplicar configuraciones relacionadas con la apariencia web; para copiar y guardar documentos o elementos de una lista desde un site de referencia (por ejemplo) habremos de usar los flujos de Power Automate, pero este tema lo expondremos en artículos posteriores.
¿Qué te ha parecido nuestro post? Recuerda que nosotros podemos dar soporte a tu empresa en el despliegue de este tipo de acciones avanzadas. O si lo prefieres puedes formarte con nosotros, para tener una idea global de todas las aplicaciones de Office 365.
¿Eres usuario de SharePoint avanzado? Te animamos entonces a que investigues el entorno de Power Platform, donde descubrirás un nuevo mundo de integraciones y automatizaciones con Office 365.Si buscas dominar Office 365 y tener una idea global de todas sus aplicaciones, te recomendamos que asistas a nuestros cursos presenciales de Office 365, que realizamos tanto In-Class como In-Company.