Monday, 14 March 2016

SharePoint Online / Office 365 : Exporting all the Terms from particular TermSet in .csv file using CSOM + PowerShell

Hi All,

Today In this article I will explain in detail how to export all the terms from given TermSet  in .CSV file using CSOM + PowerShell. This PowerShell script is applicable for SharePoint Online / Office 365 site.
 
Scenario : We have our SharePoint online site. We are using TermSets in one of the our project. We have one TermSet called “Department” having around 40-50 terms (each term is a one department). There are sudden change in the department names, so our customer want to go through each term and want to correct those.
 
Here, one option is give the rights to the customer so that they can go to “Term Store Management” page (_layouts/15/termstoremanager.aspx) and change the default label for the terms which they want to change. But this is not the best approach. This approach may be confusing for non technical customer. 
 
So best alternative we thought that we will provide TermSet in .CSV file (excel) and give it to the customer, they will do respective changes and send back to us so that we can directly import those. 
 
But again, OOB there is no option to Export the given TermSet as shown in Figure 1 and copying manually each term is not the best possible solution again.
 
Figure 1 : No Export Term Set option

So one of the best possible approach is to write our own PowerShell script and export the trems of TermSet in .CSV file.
 
PowerShell script Step By Step : 
 
Step 1 : Load the Taxonomy library as
#Load the Taxonomy library
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll"  # Path to Taxonomy library (where client SDK is installed)
 
Step 2 : Set the required variables like SiteCollection URL from where we need to export the TermSet, UserName and Password of your site to connect as
 
#Site collection URL from where we need to export the TermSet
$siteurl = ""  # Your site collection URL
 
#User name and Passwords
$userName =""  # Your user name
$password =""  # Password
 
Step 3 : Get the Microsoft.SharePoint.Client.ClientContext instance and set the credentials as
 
#client context object and setting the credentials 
[Microsoft.SharePoint.Client.ClientContext]$clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($siteurl
 
 # convert password into secured string
$securedpw = ConvertTo-SecureString $password -AsPlainText -Force
 
$clientContext.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($userName$securedpw)
 
Step 4: Get / Load the required web object as 
 
# Retrieving the taxonomy session 
$taxonomysession = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($clientContext)
 
$termStore = $taxonomysession.GetDefaultKeywordsTermStore()
$groups =$termStore.Groups
 
$context.Load($taxonomysession)
$context.Load($termStore)
$context.Load($groups)
 
Step 5  Get the group from which we need to export the TermSet 
 
#Get the group from which we need to export the TermSet
$group = $groups.GetByName("Prasham") #Prasham is group name - as shown in Fig1
 
#Retrieving the Term Set collection 
$termSets = $group.TermSets
 
#Retrieving the "Department" term set 
$termSet = $termSets.GetByName("Department")
 
#Retrieving all terms 
$terms = $termSet.Terms
 
$context.Load($group)
$context.Load($termSets)
$context.Load($termSet)
$context.Load($terms)
$context.ExecuteQuery()
 
#Loop through each term 
foreach($term in $terms)
{
#Your .CSV file name in which you need to write the Term 
    Write-Output $term.Name >> "C:\test.csv"
}
 
Thanks !
 
Enjoy Reading :)
 
As usual any comment / suggestions / feedback / questions always welcome :)
 
 
 

No comments: