In Power Automate è possibile usare le API di SharePoint Online per aggiungere a una lista una colonna di sito (site column).
Add site column
Add site column

Ad esempio supponiamo di aggiungere una colonna di sito con display name ColonnaDiTest ad una document library DocLibAddColumn:

Text: Site Settings / Site Columns

https://tenantName.sharepoint.com/sites/siteName/_layouts/15/mngfield.aspx
Colonna di sito
Colonna di sito

La prima cosa da fare è aggiungere un azione di tipo Send an HTTP request to SharePoint per recuperare lo schema xml della colonna di sito:

Power Automate: Send an HTTP get site column schema

Site Address: https://tenantName.sharepoint.com/sites/NomeSito
Method: GET
Uri: _api/site/RootWeb/Fields/getByTitle('ColonnaDiTest')/schemaxml
headers: { "accept": "application/json;odata=nometadata" }
da un risultato simile a questo

JSON

"body": {
        "value": "<Field Type=\"Text\" DisplayName=\"ColonnaDiTest\" Required=\"FALSE\" EnforceUniqueValues=\"FALSE\" Indexed=\"FALSE\" MaxLength=\"255\" Group=\"Custom Columns\" ID=\"{93ab2638-4d60-48e1-9303-6bc81e2eea81}\" SourceID=\"{09998456-d760-4407-8738-57751fcb4961}\" StaticName=\"ColonnaDiTest\" Name=\"ColonnaDiTest\" Version=\"1\"></Field>"
    }
}

Poi con un altra azione che usa il metodo CreateFieldAsXml aggiungiamo la colonna alla lista:

Power Automate: Send an HTTP add field

Site Address: https://tenantName.sharepoint.com/sites/NomeSito
Method: POST
Uri: _api/web/lists/getbytitle('DocLibAddColumn')/fields/createfieldasxml
headers: { "accept": "application/json;odata=verbose", "content-type": "application/json;odata=verbose" }
con questo body

JSON

{
        "parameters": {
            "__metadata": { "type": "SP.XmlSchemaFieldCreationInformation" },
            "Options": 8,
            "SchemaXml": '@{body('Send_an_HTTP_get_site_column_schema')['value']}'
        }
}
Da notare:
  • il metadato SP.XmlSchemaFieldCreationInformation per creare la richiesta
  • Options impostato al valore 8 che corrisponde a AddFieldInternalNameHint ovvero:Enumeration whose values specify adding an internal field name hint for the purpose of avoiding possible database locking or field renaming operations. AddFieldOptions enumeration
  • dopo SchemaXml il valore che arriva dall'azione precedente è racchiuso tra virgolette singole anzichè doppie
Suggerimento: Un altra alternativa per aggiungere una colonna di sito ad una lista potrebbe essere quella di creare un content type di sito, aggiungere la colonna di sito al content type e poi aggiungere quest'ultimo alla lista.

Vedi anche Fields REST API reference.
Tags:
Power Automate30 SharePoint Online83 SharePoint505
Potrebbe interessarti anche: