How to Add a Column to a SharePoint List Using Python

2 minute read

SharePoint is a powerful collaboration platform that allows organizations to store, organize, and manage data effectively. Sometimes, you may need to add columns to your SharePoint lists programmatically, especially when dealing with automated workflows. In this blog post, we will explore how to use Python to add a new column to a SharePoint list using the Office365-REST-Python-Client library.


Prerequisites

Before we dive into the code, ensure you have the following prerequisites:

  1. Python Installed – Ensure you have Python 3.x installed.
  2. Office365-REST-Python-Client Library – Install the required package by running:

    pip install Office365-REST-Python-Client
    
  3. SharePoint Site Details – You need the following details:
    • SharePoint site URL
    • Client ID and Client Secret (for authentication)
    • The name of the SharePoint list where you want to add the column

Step 1: Set Up Authentication

To interact with SharePoint, we need to authenticate using the client credentials method. Below is the Python code to set up authentication:

from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.client_credential import ClientCredential

# Define your SharePoint credentials and site URL
site_url = "https://your-sharepoint-site-url"
client_id = "your-client-id"
client_secret = "your-client-secret"

# Authenticate with SharePoint
credentials = ClientCredential(client_id, client_secret)
ctx = ClientContext(site_url).with_credentials(credentials)

Explanation:

  • ClientContext is used to establish a connection to the SharePoint site.
  • ClientCredential is used for authentication using the app’s client ID and secret.

Step 2: Define the Column to Be Added

Once authenticated, you can define the column properties and add it to the desired list.

from office365.sharepoint.fields.field_creation_information import FieldCreationInformation
from office365.sharepoint.fields.field_type import FieldType

# Specify the SharePoint list name
list_title = "Your SharePoint List Name"

# Get the target list
target_list = ctx.web.lists.get_by_title(list_title)

# Define the new column information
new_column = FieldCreationInformation(
    display_name="NewColumnName",  # Display name for the column
    internal_name="NewColumnName",  # Internal name used in queries
    field_type=FieldType.Text,      # Set field type (Text, Number, DateTime, etc.)
    required=False                  # Whether the field is required
)

# Add the new column to the list
target_list.fields.add(new_column)
ctx.execute_query()

print(f"Column 'NewColumnName' added successfully to the list '{list_title}'.")

Explanation:

  • We specify the list by calling get_by_title().
  • The FieldCreationInformation class is used to define the new column.
  • We execute the query to commit changes to SharePoint.

Step 3: SharePoint Field Types with Examples

When adding columns, it’s important to use the correct field type. Below is a comprehensive table of commonly used field types in SharePoint along with examples.

Field Type Description Python Enum Example Value
Text Single-line text field FieldType.Text "NewColumnName": "Sample Text"
Number Numeric values FieldType.Number "NewColumnName": 42
DateTime Date and time values FieldType.DateTime "NewColumnName": "2025-01-01"
Boolean Yes/No (True/False) values FieldType.Boolean "NewColumnName": True
Choice Dropdown list of options FieldType.Choice "NewColumnName": "Option1"
MultiChoice Multiple selection choices FieldType.MultiChoice "NewColumnName": ["Option1", "Option2"]
Lookup Links to items in another list FieldType.Lookup "NewColumnName": "123" (lookup ID)
Currency Stores monetary values FieldType.Currency "NewColumnName": 19.99
URL Hyperlink or picture field FieldType.URL "NewColumnName": "https://example.com"
User References SharePoint users FieldType.User "NewColumnName": "user@example.com"

Step 4: Error Handling

To ensure smooth execution, consider adding error handling to your script:

try:
    target_list.fields.add(new_column)
    ctx.execute_query()
    print("Column added successfully!")
except Exception as e:
    print(f"Error: {e}")

Conclusion

In this post, we’ve covered how to programmatically add a new column to a SharePoint list using Python. This approach is particularly useful for automating SharePoint management tasks, integrating with workflows, or enhancing data collection processes.

By understanding different field types and how to add them dynamically, you can streamline SharePoint data operations in your organization.

Do you have any questions or suggestions? Let us know in the comments below!

Updated: