I am using Metadata API to create various fields. For most part it works, but not for Picklist type. Seems like I am missing picklistValues[]
API version 39
This is working
customField = new MetadataService.CustomField();
customField.fullName = sObj + '.Text__c';
customField.label = 'Test';
customField.type_x = 'Text';
customField.description = 'Test.';
customField.length = 255;
customFields.add(customField);
This is NOT working
customField = new MetadataService.CustomField();
customField.fullName = sObj + '.Segment__c';
customField.label = 'Segment';
customField.type_x = 'Picklist';
customField.description = '';
customFields.add(customField);
Best Answer
For creating picklist using Metadata API, use the following code:
Description: For picklist, we need to set the
valueset
attribute which is of typeValueSet
.For type
ValueSet
, createvalueSetDefinition
which is of typeValueSetValuesDefinition
.For type
ValueSetValuesDefinition
, createvalue
which is of type List ofCustomValue
.Refer Metadata API types