SharePoint Online: Import Terms to Term Set from CSV using PowerShell

Requirement: Import terms to a term set in SharePoint Online from a CSV file using PowerShell.

How to Import Terms to a Term Set in SharePoint Online?
Here is my CSV file with a list of Terms for a Term set called "Job Title" and we can use PowerShell to bulk create terms to a term set.
sharepoint online import term set

SharePoint Online Import Terms to Term Set using PowerShell: 
#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"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll"
#Variables for Processing
$AdminURL = ""
$TermGroupName= "People"
$TermSetName="Job Title"
$CSVFile ="C:\Temp\ImportTerms.csv" 
$TermHeaderInCSV ="JobTitle"

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

    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminURL)
    $Ctx.Credentials = $Credentials

    #Get the term store
    $TermStore =$TaxonomySession.GetDefaultSiteCollectionTermStore()

    #Get Termstore data from CSV and iterate through each row
    Import-Csv $CSVFile | ForEach-Object {
        #Get the Term Group

        #Get the term set
        $TermSet = $TermGroup.TermSets.GetByName($TermSetName)

        #CSV File Header Row in Term to Add
        $TermName = $_.$($TermHeaderInCSV)
        #Check if the given term exists already
        $Terms = $TermSet.Terms
        $Term = $Terms | Where-Object {$_.Name -eq $TermName}
        If(-not $Term)
            #Create Term Set
            Write-host "Creating Term '$TermName'" -ForegroundColor Cyan
            $Term = $TermSet.CreateTerm($TermName,1033,[System.Guid]::NewGuid().toString())
            Write-host "New Term '$TermName' Added Successfully!" -ForegroundColor Green
            Write-host "Term '$TermName' Exists Already!" -ForegroundColor Yellow
Catch {
    write-host -f Red "Error Importing Term store Data!" $_.Exception.Message
and the result:
sharepoint online import terms


  1. Great thanks. I am seeing following error: Error Importing Term store Data ! Exception calling ExecuteQuery with 0 aguments: "Access denies. You do not have permission to perform this action or access this resource." Any idea about this?

    1. You need to be a member of "Term Store Administrator" group even you are a Tenant Admin! So try adding the account you are running the PowerShell script to Term Store Admin group.

  2. This is very helpful. What changes are necessary to adapt your script to include the term description?

  3. hello, i had the error below with your script

    Error Importing Term store Data! Exception lors de l'appel de « ExecuteQuery » avec « 0 » argument(s) : « Specified argument was out of the range of valid values.
    Parameter name: index »


Please Login and comment to get your questions answered!

Powered by Blogger.