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.
Happy Coding,
Sathish Nadarajan.
Leave a comment