How to get the Target Audience GUID Programmatically in SharePoint 2013.


Sathish Nadarajan
SharePoint MVP
Published On :   21 Apr 2015
Visit Count
Today :  1    Total :   10253



In some scenarios, we require the GUID of the Target Audience Groups. To retrieve the GUIDs, the below method can be used.

 public string GetTargetContentGUID(string currentSiteURL, string targetAudiences)
         {
             string targetContent = string.Empty;
             try
             {
                 string[] targetAudienceArray = targetAudiences.Split(',');
                 foreach (string tempTargetAudience in targetAudienceArray)
                 {
                     try
                     {
                         Guid g = new Guid(tempTargetAudience);
                         targetContent = targetContent + ";" + tempTargetAudience;
                     }
                     catch (System.FormatException ex)
                     {
                         if (ex.Message == "Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).")
                         {
                             //
 
                             using (SPSite site = new SPSite(currentSiteURL))
                             {
                                 SPWeb web = site.RootWeb;
 
 
                                 Microsoft.Office.Server.ServerContext context = Microsoft.Office.Server.ServerContext.GetContext(site);
                                 AudienceManager audManager = new AudienceManager(context);
                                 AudienceCollection audiences = audManager.Audiences;
 
                                 for (int i = 0; i < audiences.Count; i++)
                                 {
                                     if (audiences[i].AudienceName == tempTargetAudience)
                                     {
                                         targetContent = targetContent + ";" + Convert.ToString(audiences[i].AudienceID);
                                     }
                                 }
 
                             }
 
                         }
                     }
 
                 }
 
 
             }
             catch (Exception ex)
             {
                 Logger.LogException("Error has occured On the Method”);
                 return string.Empty;
             }
             return targetContent.TrimStart(';');
         }
 

Here one thing we need to be more cautious is, sometimes, the Target Audience Column will store the GUID directly and sometimes, it will be stored as String. That’s the reason, I kept a Try Catch Block.

Please refer the below link about this inconsistency.

https://social.technet.microsoft.com/forums/sharepoint/en-US/d05145f4-7faf-4205-9e80-507915c04bf5/targeting-audience-displaying-guid

Happy Coding,

Sathish Nadarajan.

Categories