kwizcom banner advertisement

SharePoint Online: Create Single Line of Text Column in List using PowerShell

Requirement: SharePoint Online PowerShell to add column to list

How to Add Single Line of Text Column to SharePoint Online List?
  • Browse to your SharePoint Online site and Navigate to the target list in which you want to create a new Single Line of Text column.
  • Under the List tab, click on "Create Column" button in the ribbon.
  • Provide the Name to your new column, specify the type as "Single Line of Text" 
  • Fill other optional values and Click on "OK" to create Single line of text column to SharePoint Online list.
    SharePoint Online Create Single Line of Text Column in List using PowerShell

PowerShell to Add Single Line of Text Column to List in SharePoint Online
Here is the PowerShell script to create single line of text column to any existing list or library in SharePoint online.
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Custom function to add column to list
Function Add-SingleLineTextColumnToList()
{ 
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $ListName,
        [Parameter(Mandatory=$true)] [string] $Name,
        [Parameter(Mandatory=$true)] [string] $DisplayName,
        [Parameter(Mandatory=$true)] [string] $Description,
        [Parameter(Mandatory=$true)] [string] $IsRequired,        
        [Parameter(Mandatory=$true)] [string] $EnforceUniqueValues,
        [Parameter(Mandatory=$true)] [string] $MaxLength
    )

    #Generate new GUID for Field ID
    $FieldID = New-Guid

    Try {
        $Cred= Get-Credential
        $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Credentials
        
        #Get the List
        $List = $Ctx.Web.Lists.GetByTitle($ListName)
        $Ctx.Load($List)
        $Ctx.ExecuteQuery()

        #Check if the column exists in list already
        $Fields = $List.Fields
        $Ctx.Load($Fields)
        $Ctx.executeQuery()
        $NewField = $Fields | where { ($_.Internalname -eq $Name) -or ($_.Title -eq $DisplayName) }
        if($NewField -ne $NULL)  
        {
            Write-host "Column $Name already exists in the List!" -f Yellow
        }
        else
        {
            #Define XML for Field Schema
            $FieldSchema = "<Field Type='Text' ID='{$FieldID}' Name='$Name' StaticName='$Name' DisplayName='$DisplayName' Description='$Description' Required='$IsRequired' EnforceUniqueValues='$EnforceUniqueValues' MaxLength='$MaxLength' />"
            $NewField = $List.Fields.AddFieldAsXml($FieldSchema,$True,[Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldInternalNameHint)
            $Ctx.ExecuteQuery()    

            Write-host "New Column Added to the List Successfully!" -ForegroundColor Green  
        }
    }
    Catch {
        write-host -f Red "Error Adding Column to List!" $_.Exception.Message
    }
} 

#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ListName="Projects"
$Name="ProjectCode"
$DisplayName="Project Code"
$Description="Enter the Project Code"
$IsRequired = "TRUE"
$EnforceUniqueValues="FALSE" #Must set Indexed="FALSE", if Unique="TRUE"
$MaxLength="100"

#Call the function to add column to list
Add-SingleLineTextColumnToList -SiteURL $SiteURL -ListName $ListName -Name $Name -DisplayName $DisplayName -Description $Description -IsRequired $IsRequired -MaxLength $MaxLength -EnforceUniqueValues $EnforceUniqueValues 

How to set default value for the field? 
You can set default value by adding tag to the field schema. Here is an example:
$FieldSchema = "<Field Type='Text' Name='$Name' StaticName='$Name' DisplayName='$DisplayName'><Default>Project Code - XXXXX</Default></Field>"

PnP PowerShell to Add Field to List in SharePoint Online
Here is the PowerShell to add list column of type Single Line of Text to SharePoint Online List
#Config Variables
$SiteURL = "https://crescenttech.sharepoint.com"
$ListName= "Team Projects"
$FieldTitle= "Project Status"
$FieldInternalName ="ProjectStatus"
$FieldType = "Text"

#Get Credentials to connect
$Cred = Get-Credential

Try {
    #Connect to PNP Online
    Connect-PnPOnline -Url $SiteURL -Credentials $Cred
    
    #Add new field to list
    Add-PnPField -List $ListName -DisplayName $FieldTitle -InternalName $FieldInternalName -Type $FieldType -Required -AddToDefaultView -ErrorAction Stop
    Write-host -f Green "New Field '$FieldTitle' Added to the List!"

}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
Similarly, we can add a text column to SharePoint Online list from XML schema as well.
#Config Variables
$SiteURL = "https://crescenttech.sharepoint.com/sites/marketing"
$ListName= "Projects"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)

#Define XML Schema for Text Field
$FieldXML= "<Field Type='Text' Name='ProjectCode' ID='$([GUID]::NewGuid())' DisplayName='Project Code' Required ='FALSE' EnforceUniqueValues = 'TRUE' Indexed='TRUE'></Field>"

#Add Text Field to list from XML
Add-PnPFieldFromXml -FieldXml $FieldXML -List $ListName
SharePoint Online: Create Single Line of Text Column in List using PowerShell SharePoint Online: Create Single Line of Text Column in List using PowerShell Reviewed by Salaudeen Rajack on September 26, 2016 Rating: 5

No comments:

Please Login and comment to get your questions answered!

Powered by Blogger.