I have the API Name of a custom field on a knowledge article stored a string
kav.articleType = 'Frequently_Asked_Question__kav';
where kav is a KnowledgeArticleVersion
object.
How can I get the label name from kav.articleType?
I was thinking I could do something like
Schema.SObjectType.KnowledgeArticleVersion.fields.(kav.ArticleType).getLabel();
But this is not working. Any ideas?
Here is some more context:
What I am trying to do is update some fields on a custom Article Feedback object whenever a record of this object is created. A user only needs to manually enter the Article Number and the remaining fields like Article Type, Article Title, etc. should be automatically added using this trigger.
I got most of the fields to work except the Article Type is showing as its api name and not the label. I tried it a couple different ways. I commented these failed attempts in the code below
trigger CreateExternalFeedback on aft__Article_Feedback__c (before insert) {
for (aft__Article_Feedback__c f : trigger.new) {
if (f.aft__Feedback_Source__c == 'External') {
//Retrieve KnowledgeArticleVersion
String q = 'select KnowledgeArticleId, articleNumber, title, ArticleType, VersionNumber, Language, LastPublishedDate, CreatedDate from KnowledgeArticleVersion where PublishStatus = \'online\' and Language = \'en_US\'';
q += 'and articleNumber = \''+ f.aft__Article_Number__c +'\' limit 1';
KnowledgeArticleVersion kav = (KnowledgeArticleVersion) Database.query(q);
f.OwnerId = '00Gc0000001ENiJ';
f.aft__Article_Title__c = kav.Title;
f.aft__Article_Created_Date__c = kav.CreatedDate;
//f.aft__Article_Type__c = kav.ArticleType;
//f.aft__Article_Type__c = Schema.kav.KnowledgeArticleVersion.fields.ArticleType.getLabel();
f.aft__Article_Version__c = kav.VersionNumber;
f.aft__Feedback_Status__c = 'New';
f.Knowledge_Article_Link__c = 'https://cs14.salesforce.com/knowledge/publishing/articleOnlineDetail.apexp?id='+kav.KnowledgeArticleId;
f.aft__Language__c = kav.Language;
f.aft__Last_Published_Date__c = kav.LastPublishedDate;
}
}
}