- Go to Setup | Create | Objects.
- Select your Custom Object.
- Go to the Custom Buttons, Links and Actions section.
- Click on New Button or Link.
- Create a New Custom Button.
- Select the Display Type as Detail Page Button.
- Select the Behavior as Execute JavaScript.
- Select the Content Source as OnClick JavaScript.
- Include below code:
{!REQUIRESCRIPT("/soap/ajax/29.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/29.0/apex.js")}
window.location = '/_ui/core/email/author/EmailAuthor?rtype=003&p3_lkid={!CustomObject__c.Id}&retURL=/{!CustomObject__c.Id}&p5={!$User.Email}&p24="{!CustomObject__c.To_Email__c}&template_id=00X90000001FCj4';
Note: If the custom object holds some of the contact details then you would need to use the values from custom object, not the contact object.
Save it. Edit the Page Layout of the Custom Object and drag this button on to the Page Layout under the Custom Button section.
The information shown below are the parameters that can be added in the URL. Fields that are mark with asterisk are always needed in the URL.
Parameter Name |
Parameter Value |
p2_lkid |
To (can be Contact or Lead Id) |
p3_lkid |
Related To (usually the parent record Id) |
p4 |
CC |
p5 |
BCC |
p6 |
Subject |
p23 |
Email Body |
p24 |
Additional To |
Template_Id |
Salesforce email template Id |
retURL |
Redirection page when cancel button is clicked |
public String Convert15CharTo18CharId(String id) {
String suffix = '';
Integer flags;
for (integer i = 0; i < 3; i++) {
flags = 0;
for (Integer j = 0; j < 5; j++) {
String c = id.substring(i * 5 + j, i * 5 + j + 1);
//Only add to flags if c is an uppercase letter:
if (c.toUpperCase().equals(c) && c >= 'A' && c <= 'Z') {
flags = flags + (1 << j);
}
}
if (flags <= 25) {
suffix = suffix + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.substring(flags, flags + 1);
} else {
suffix += '012345'.substring(flags - 26, flags - 25);
}
}
String convertId = id + suffix;
//18 Digit Id with checksum
System.debug('convertId-' + convertId);
return 18 digitId;
}
Example:
String Id = '0019000001EJNfj';
String convertedId = Convert15CharTo18CharId(Id);
Follow the below steps to create a formula field that will give you the 18 characters ID of the records.
- Go to Setup | Customize | object name | click Fields
(For Custom objects: Setup | Create | Objects | Object Name)
- In the related list “Custom Fields & Relationships” click New.
- Click the Formula radio button.
- Click the Text radio button for “Formula Return Type”.
- 6. Input the following Formula into the Formula Editor:
CASESAFEID(Id)
- Set Field Visibility, add/ remove from Page Layout(s).
- Click Save.
NOTE: When dealing with record types only custom record types have ids.
function salesForceIdCalculate($id)
{
$map = implode('', array_merge(range('A', 'Z'), range(0, 9)));
$checksum = '';
foreach (str_split($id, 5) as $chunk) {
$checksum .= substr($map, bindec(strrev(array_reduce(str_split($chunk, 1), function($carry, $item)
{
$carry .= (!is_numeric($item) && $item == strtoupper($item)) ? '1' : '0';
return $carry;
}, ''))), 1);
}
return $checksum;
}
// example
//$_15ID = '0019000001EJNfj';
//$_18ID = $_15ID. salesForceIdCalculate($_15ID);
function Convert15CharTo18CharId(id) {
if (id == null) {
return id;
}
//Scrub quotes from this id
id = id.replace(/\"/g, '');
if (id.length != 15) {
return null;
}
var suffix = "";
for (var i = 0; i < 3; i++) {
var flags = 0;
for (var j = 0; j < 5; j++) {
var c = id.charAt(i * 5 + j);
if (c >= 'A' && c < = 'Z') {
flags += 1 << j;
}
}
if (flags <= 25) {
suffix += "ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(flags);
} else {
suffix += "012345".charAt(flags - 26);
}
}
return id + suffix;
}