public void GetTerms(ClientContext context, StreamWriter file, Term term, string prefix)
{
TermCollection subTerms = term.Terms;
context.Load(subTerms);
context.ExecuteQuery();
foreach (Term subTerm in subTerms)
{
file.WriteLine(prefix + subTerm.Name + "," + subTerm.Id);
GetTerms(context, file, subTerm, prefix + subTerm.Name + "/");
}
}
private void button1_Click(object sender, EventArgs e)
{
//Recursive function to get terms
//Specify admin user and SharePoint site URL
//User = "e-sjones"
string site = "mysite";
//Pwd = Read-Host -Prompt "Enter your password" -AsSecureString
ClientContext context = new Microsoft.SharePoint.Client.ClientContext(site);
Web web = context.Web;
context.Load(web);
context.ExecuteQuery();
//Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials(User,Pwd)
//Context.Credentials = Credentials
TaxonomySession mms = TaxonomySession.GetTaxonomySession(context);
context.Load(mms);
//Context.ExecuteQuery()
//Get Term Stores
var termStores = mms.TermStores;
context.Load(termStores);
context.ExecuteQuery();
var termStore = termStores[0];
context.Load(termStore);
context.ExecuteQuery();
//Get Groups
var Groups = termStore.Groups;
context.Load(Groups);
context.ExecuteQuery();
//Create the file and add headings
var outputFile = @"c:\temp\Output File Path.txt";
var file = new StreamWriter(outputFile);
file.WriteLine("Term Set Name,GUID");
foreach (TermGroup group in Groups)
{
context.Load(group);
context.ExecuteQuery();
file.WriteLine();
file.WriteLine("-----------");
file.WriteLine();
file.WriteLine(group.Name + "," + group.Id);
var TermSets = group.TermSets;
context.Load(TermSets);
context.ExecuteQuery();
foreach (TermSet termSet in TermSets)
{
file.WriteLine("--");
file.WriteLine(termSet.Name + "," + termSet.Id);
var Terms = termSet.Terms;
context.Load(Terms);
context.ExecuteQuery();
foreach (Term term in Terms)
{
file.WriteLine(term.Name + "," + term.Id);
GetTerms(context, file, term, term.Name + "/");
}
}
}
file.Flush();
file.Close();
}
I can't really claim credit by the way. This was a re-write of a PowerShell script that I found here: http://sharepointrapt.blogspot.co.uk/2014/08/export-sharepoint-managed-metadata.html