Collaborate, Innovate, Automate

Cómo Corregir Errores "Index Out of Range" en Plantillas de Aprovisionamiento PnP

5 de mayo de 2026 PNP PowerShell SharePoint

Estás importando una plantilla de aprovisionamiento PnP y falla con:

Index was out of range. Must be non-negative and less than the size of the collection.

Un error genérico de colección .NET sin contexto útil — sin nombre de página, sin número de sección, sin referencia al web part. A continuación, qué lo causa y cómo corregirlo.

TL;DR: Este error generalmente significa que un web part está asignado a una columna que no existe en su sección. Busca discrepancias entre el atributo Type en los elementos <pnp:Section> y los valores de Column en los controles dentro de ellos.

La causa

Las plantillas de aprovisionamiento PnP almacenan los diseños de página como XML. Cada página está compuesta por secciones, y cada sección tiene un tipo definido — OneColumn, TwoColumnLeft, TwoColumnRight, ThreeColumn, etc.

Dentro de cada sección, los web parts se posicionan usando un atributo Column. El problema ocurre cuando la columna a la que hace referencia un web part no existe en el tipo de sección.

El error proviene del manejo de colecciones .NET subyacente dentro del motor de aprovisionamiento, por eso no proporciona contexto sobre páginas o secciones — simplemente intenta acceder a un índice de lista que no existe y lanza un error genérico.

Por ejemplo:

<pnp:Section Order="9" Type="TwoColumnRight">
    <pnp:CanvasControl ... Order="1" Column="3" />
    <pnp:CanvasControl ... Order="2" Column="3" />
</pnp:Section>

Una sección TwoColumnRight solo tiene dos columnas. Estos web parts hacen referencia a la Columna 3, que no existe — de ahí el error.

Cómo ocurre

Esto casi siempre ocurre cuando el diseño de una sección de página fue cambiado después de exportar la plantilla. La secuencia típica:

  1. Se construye una página con una sección de tres columnas
  2. Se añaden web parts en las tres columnas
  3. Alguien cambia el diseño de la sección a dos columnas en la interfaz de SharePoint
  4. Los web parts que estaban en la columna 3 quedan colapsados — SharePoint lo gestiona visualmente
  5. Se exporta la plantilla — pero el XML ahora tiene un tipo de sección TwoColumnRight con web parts que aún hacen referencia a Column="3"
  6. Al intentar importar esa plantilla, PnP intenta colocar un web part en una columna que no existe

Lo frustrante es que la página se ve bien en SharePoint. El problema solo aparece durante el aprovisionamiento.

Cómo encontrarlo

Abre tu archivo de plantilla .xml y busca discrepancias entre los tipos de sección y las referencias de columna. Los números de columna válidos para cada tipo de sección son:

Tipo de sección Columnas válidas
OneColumn1
OneColumnFullWidth1
TwoColumnLeft1, 2
TwoColumnRight1, 2
ThreeColumn1, 2, 3

Busca en el XML Column="3" y comprueba si alguno de esos controles está dentro de una sección que no sea ThreeColumn. Del mismo modo, comprueba si hay Column="2" dentro de secciones OneColumn.

Un bloque típico con el problema tiene este aspecto:

<!-- Sección definida como dos columnas -->
<pnp:Section Order="9" Type="TwoColumnRight">

    <!-- Web part haciendo referencia a una tercera columna que no existe -->
    <pnp:CanvasControl WebPartType="QuickLinks"
        Order="1" Column="3">
        ...
    </pnp:CanvasControl>

</pnp:Section>

La corrección

Tienes dos opciones dependiendo de cómo debería verse realmente la página:

Opción 1 — Corregir el tipo de sección para que coincida con la realidad

Si la página realmente tiene tres columnas, el tipo de sección en el XML es incorrecto. Cámbialo:

<!-- Antes -->
<pnp:Section Order="9" Type="TwoColumnRight">

<!-- Después -->
<pnp:Section Order="9" Type="ThreeColumn">

Opción 2 — Mover los web parts a una columna válida

Si la página realmente tiene dos columnas y los web parts afectados necesitan moverse, actualiza el atributo Column:

<!-- Antes -->
<pnp:CanvasControl ... Order="1" Column="3" />

<!-- Después -->
<pnp:CanvasControl ... Order="1" Column="2" />

Después de hacer el cambio, vuelve a ejecutar el aprovisionamiento — el error debería haber desaparecido.

Atención a múltiples ocurrencias

Esto rara vez es un problema puntual. Las plantillas exportadas de sitios que han evolucionado con el tiempo a menudo tienen esta discrepancia en múltiples secciones de múltiples páginas. Corrige una ocurrencia y puede que encuentres otra en la siguiente ejecución.

Trabaja la plantilla sistemáticamente — comprueba cada tipo de sección contra los números de columna usados por sus controles antes de intentar el aprovisionamiento.

Prevención y validación

Al exportar plantillas PnP de sitios que han cambiado de diseño con el tiempo, una auditoría rápida del XML antes de importar puede ahorrarte una sesión de depuración frustrante.

Para plantillas más grandes, considera añadir un paso de validación que analice el XML en busca de referencias de columna inválidas antes del aprovisionamiento — un script corto de PowerShell que analice el XML y marque cualquier valor de Column que supere el máximo para su tipo de sección padre. Es un bucle de retroalimentación mucho más rápido que una ejecución de aprovisionamiento fallida.


Cameron Griffiths es consultor de Microsoft 365 con base en Valencia, España, especializado en SharePoint Online, PnP PowerShell, SPFx y Power Platform. camerongriffiths.com