function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Ashok Kumar 567Ashok Kumar 567 

How to Create custom Button using Apex code?

Best Answer chosen by Ashok Kumar 567
Ashok Kumar 567Ashok Kumar 567
Deploy ->  https://github.com/financialforcedev/apex-mdapi

And Then write this code

will work great
 public static void button()
    {
        MetadataService.MetadataPort service = new MetadataService.MetadataPort();
        service.SessionHeader = new MetadataService.SessionHeader_element();
        service.SessionHeader.sessionId = UserInfo.getSessionId();
        
        MetadataService.WebLink  DetailButton = new MetadataService.WebLink();
        DetailButton.fullName = 'Account.MyCustomButton';
        DetailButton.availability = 'online';
        DetailButton.displayType = 'button';
        DetailButton.encodingKey = 'UTF-8';
        DetailButton.linkType = 'page';
        DetailButton.masterLabel = 'My Custom Button Lable';
        DetailButton.openType = 'replace';
        DetailButton.page_x = 'myvfpage';
        DetailButton.protected_x = false;
        
        
        List<MetadataService.SaveResult> results =      
            service.createMetadata(
                new MetadataService.Metadata[] { DetailButton });       
        MetadataServiceExamples.handleSaveResults(results[0]);
    }

All Answers

AnudeepAnudeep (Salesforce Developers) 
Hi Ashok, 

Can you provide more details? You cannot create a custom button using apex code but can call apex code from custom button 

See this blog (https://andyinthecloud.com/2013/07/16/how-to-call-apex-code-from-a-custom-button/) for example

Anudeep

 
ayu sharma devayu sharma dev
Hello

Theres a solution for this using visualforce.

https://salesforce.stackexchange.com/questions/14065/create-custom-button-using-apex-code/138225

Let me know if it resolves your issue.

Regards
Ayush Sharma
Ashok Kumar 567Ashok Kumar 567
Deploy ->  https://github.com/financialforcedev/apex-mdapi

And Then write this code

will work great
 public static void button()
    {
        MetadataService.MetadataPort service = new MetadataService.MetadataPort();
        service.SessionHeader = new MetadataService.SessionHeader_element();
        service.SessionHeader.sessionId = UserInfo.getSessionId();
        
        MetadataService.WebLink  DetailButton = new MetadataService.WebLink();
        DetailButton.fullName = 'Account.MyCustomButton';
        DetailButton.availability = 'online';
        DetailButton.displayType = 'button';
        DetailButton.encodingKey = 'UTF-8';
        DetailButton.linkType = 'page';
        DetailButton.masterLabel = 'My Custom Button Lable';
        DetailButton.openType = 'replace';
        DetailButton.page_x = 'myvfpage';
        DetailButton.protected_x = false;
        
        
        List<MetadataService.SaveResult> results =      
            service.createMetadata(
                new MetadataService.Metadata[] { DetailButton });       
        MetadataServiceExamples.handleSaveResults(results[0]);
    }
This was selected as the best answer