Actualización 2025-06-16

El artículo ha sido actualizado para incluir información sobre cómo configurar la configuración cuando la opción de Valores Predeterminados de Columna no está inicialmente habilitada en la biblioteca. Esto es importante porque solo el archivo client_LocationBasedDefaults.html no es suficiente para que funcione Actualización.

Cambiar Valores Predeterminados de Columna

La configuración de Valores Predeterminados de Columna es una excelente opción para establecer valores para nuevos elementos en una biblioteca. Esta configuración nos permite, por ejemplo, establecer diferentes valores para diferentes carpetas, lo que puede ser beneficioso cuando todos los elementos dentro de ciertas carpetas deben tener el mismo valor por defecto (por ejemplo, para propósitos de búsqueda o filtrado).

Esta configuración está disponible en la página de configuraciones de la biblioteca de documentos.

https://TENANT.sharepoint.com/sites/SITE/_layouts/15/ColumnDefaults.aspx?List={LISTID}

Como se muestra en la imagen, podemos establecer valores predeterminados para cada columna en cada nivel de carpeta y subcarpeta. Configuraciones de Valores Predeterminados de Columna

Ten en cuenta que no todas las columnas están disponibles para esta configuración. Por ejemplo, las columnas de Búsqueda y Persona no son compatibles.

Por supuesto, está bien configurar todos los valores usando la interfaz de usuario, pero ¿qué pasa si queremos automatizar este proceso?


El problema principal en este caso es que esta configuración no se guarda en las configuraciones de columna o las configuraciones de lista. A primera vista, parece que no hay una API de SharePoint para manejarlo.

Durante la investigación, descubrí que esta configuración se guarda en un archivo! llamado client_LocationBasedDefaults.html, ubicado en la carpeta Forms de la biblioteca.

Pantalla de la Extensión SP Editor: Editor de archivos de la Extensión SP Editor

El contenido del archivo es XML. Un ejemplo de la estructura se muestra a continuación:

<MetadataDefaults><a href="/sites/example/LIBRARY/folder1/subFolder1"><DefaultValue FieldName="TextColumn">SubTest</DefaultValue></a><a href="/sites/example/LIBRARY/folder2/subFolder2"><DefaultValue FieldName="TextColumn">SubTest2</DefaultValue><DefaultValue FieldName="DateColumn">2025-05-01T07:00:00Z</DefaultValue></a></MetadataDefaults>

Así que la estructura para una regla particular es la siguiente:

<MetadataDefaults>
  <a href="ruta a la carpeta">
    <DefaultValue FieldName="nombre de columna">Valor Predeterminado</DefaultValue>
    <DefaultValue FieldName="nombre de columna2">Valor Predeterminado2</DefaultValue>
    {... más columnas}
  </a>
  {... más carpetas}
</MetadataDefaults>

Ejemplo de Acción de Flujo de Power Automate:

URL:

 https://<<contoso>>.sharepoint.com/sites/<<nombreSitio>>/_api/web/getFolderByServerRelativePath(decodedUrl='%2Fsites%2F**NOMBRESITIO**%2F**BIBLIOTECA**%2FForms')/files/add(overwrite=true,url='client_LocationBasedDefaults.html')

Cuerpo:


<MetadataDefaults><a href="/sites/NOMBRESITIO/BIBLIOTECA/folder1/subFolder1"><DefaultValue FieldName="TextColumn">SubTest</DefaultValue></a><a href="/sites/NOMBRESITIO/BIBLIOTECA/folder2/subFolder2"><DefaultValue FieldName="TextColumn">SubTest2</DefaultValue><DefaultValue FieldName="DateColumn">2025-05-01T07:00:00Z</DefaultValue></a></MetadataDefaults>

Al usar este método, recuerda que el archivo se sobrescribe, por lo que para actualizar los valores necesitas obtener los valores actuales, agregar los nuevos y luego actualizar el archivo.

Acción PA


Reemplaza contoso, nombreSitio, NOMBRESITIO, BIBLIOTECA, y tu XML en el cuerpo.

Configurar Configuración Inicial de Columna Predeterminada

Si la configuración de Valores Predeterminados de Columna no está habilitada en la biblioteca, esto requiere agregar un Event Receiver a la biblioteca. Los detalles sobre el Event Receiver se pueden encontrar a continuación.

El código fue encontrado gracias a la biblioteca pnpjs.

Agregar Event receiver

URL:

 https://<<contoso>>.sharepoint.com/sites/<<nombreSitio>>/_api/web/lists/getByTitle('<<NombreLista>>')/EventReceivers/add

Cuerpo:

{
  "eventReceiverCreationInformation": {
    "EventType": 10001,
    "ReceiverAssembly": "Microsoft.Office.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c",
    "ReceiverClass": "Microsoft.Office.DocumentManagement.LocationBasedMetadataDefaultsReceiver",
    "ReceiverName": "LocationBasedMetadataDefaultsReceiver ItemAdded",
    "SequenceNumber": 1000,
    "Synchronization": 1
  }
}