Newer Version Available

This content describes an older version of this product. View Latest

Synchronous Examples

The following examples are synchronous calls. No callback methods are required.

Data Call Examples

login Example:

1try{
2    var result = sforce.connection.login("myname@myemail.com", "password");
3    log("logged in with session id " + result.sessionId);
4  }catch(error) {
5    if (error.faultcode.indexOf("INVALID_LOGIN") != -1) {
6      log("check your username and passwd, invalid login");
7    } else {
8      log(error);
9    }
10  }

query Example:

1  result = sforce.connection.query("Select Name, Id from User");
2  records = result.getArray("records");
3 
4  for (var i=0; i< records.length; i++) {
5    var record = records[i];
6    log(record.Name + " -- " + record.Id);
7  }

queryMore Example:

1var result = sforce.connection.query("select name, id from account");
2 
3  var queryMore = true;
4  while (queryMore) {
5      var records = result.getArray("records");
6      var sb = new sforce.StringBuffer();
7 
8      for (var i = 0; i < records.length; i++) {
9        sb.append(records[i].Name).append(",");
10      }
11 
12      log(records.length);
13      log(sb.toString());
14 
15      if (result.getBoolean("done")) {
16        queryMore = false;
17      } else {
18
19        result = sforce.connection.queryMore(result.queryLocator);
20    }
21  }

queryAll Example:

1var result = sforce.connection.queryAll("Select Name, Id from Account");
2  var records = result.getArray("records");
3 
4  for (var i=0; i<records.length; i++) {
5    var record = records[i];
6    log(record.Name + " -- " + record.Id);
7  }

Relationship Query Example—Child to Parent:

1var result = sforce.connection.query("SELECT c.Id, c.firstname, " +
2    "c.lastname, c.leadsource, a.Id, a.name, a.industry, c.accountId " +
3    "FROM Contact c, c.account a ORDER BY leadsource LIMIT 10");
4 
5  var it = new sforce.QueryResultIterator(result);
6 
7  while(it.hasNext()) {
8    var record = it.next();
9    var accountName = record.Account ? record.Account.Name : null;
10 
11    log( record.FirstName + " " + record.LastName +
12         " in account " + accountName);
13  }

Relationship name formats differ depending on the direction of the relationship (parent-to-child or child-to-parent), and also depending on whether the objects are standard or custom objects. For more information, see Relationship Queries in the Salesforce SOQL and SOSL Reference Guide at www.salesforce.com/us/developer/docs/soql_sosl/index.htm.

Note

Relationship Query Example—Parent to Child:

1var result = sforce.connection.query("select a.Name, a.Industry, " +
2    "(select c.LastName, c.LeadSource from a.Contacts c) " +
3    "from account a order by industry limit 100");
4 
5  var ait = new sforce.QueryResultIterator(result);
6 
7  while(ait.hasNext()) {
8    var account = ait.next();
9 
10    var contacts = [];
11    if (account.Contacts) {
12      var cit = new sforce.QueryResultIterator(account.Contacts);
13      while(cit.hasNext()) {
14        var contact = cit.next();
15        contacts.push(contact.LastName);
16      }
17    }
18 
19    log(account.Name + ": " + contacts.join(","));
20  }

create Example:

1var account = new sforce.SObject("Account");
2  account.Name = "my new account";
3  var result = sforce.connection.create([account]);
4 
5  if (result[0].getBoolean("success")) {
6    log("new account created with id " + result[0].id);
7  } else {
8    log("failed to create account " + result[0]);
9  }

Batch create Example:

1var accounts = [];
2 
3  for (var i=0; i<10; i++) {
4    var account = new sforce.SObject("Account");
5    account.Name = "my new account " + i;
6    accounts.push(account);
7  }
8 
9  var result = sforce.connection.create(accounts);
10 
11  for (var i=0; i<result.length; i++) {
12    if (result[i].getBoolean("success")) {
13      log("new account created with id " + result[i].id);
14    } else {
15      log("failed to create account " + result[i]);
16    }
17  }

delete Example:

1//create an example account
2  var account = new sforce.SObject("Account");
3  account.Name = "my new account";
4  var result = sforce.connection.create([account]);
5 
6  if (result[0].getBoolean("success")) {
7    log("new account created with id " + result[0].id);
8    account.Id = result[0].id;
9  } else {
10    throw ("failed to create account " + result[0]);
11  }
12 
13  //now delete the example account
14  var delResult = sforce.connection.deleteIds([account.Id]);
15  if (delResult[0].getBoolean("success")) {
16    log("account with id " + result[0].id + " deleted");
17  } else {
18    log("failed to delete account " + result[0]);
19  }

merge Example:

1//create two accounts
2  var account1 = new sforce.SObject("Account");
3  account1.Name = "myName";
4  account1.Phone = "2837484894";
5 
6  var account2 = new sforce.SObject("Account");
7  account2.Name = "anotherName";
8  account2.Phone = "938475950";
9 
10  var result = sforce.connection.create([account1, account2]);
11  if (result.length != 2) throw "create failed";
12 
13  account1.id = result[0].id;
14  account2.id = result[1].id;
15 
16  //create merge request
17  var request = new sforce.MergeRequest();
18  request.masterRecord = account1;
19  request.recordToMergeIds = account2.id;
20 
21  //call merge
22  result = sforce.connection.merge([request]);
23 
24  if (result[0].getBoolean("success")) {
25    log("merge success " + result[0]);
26  } else {
27    log("merge failed " + result[0]);
28  }
process Example:
1var request = new sforce.ProcessSubmitRequest();
2request.objectId = "id of object that has a workflow rule on it"; // valid id
3request.comments = "automated approval";
4
5var request2 = new sforce.ProcessSubmitRequest();
6request2.objectId = 'id of object that does NOT have a workflow rule on it' ; // valid id, not useful for workflow
7request2.comments = "approval that will fail";
8
9var processRes = sforce.connection.process([request, request2]);
10
11if(!processRes[0].getBoolean('success')){
12            log("The first process request failed and it should not have");
13}
14
15if(processRes[1].getBoolean('success')){
16            log("The second process request succeeded and it should not have");
17}
18
19log(processRes[0].errors);
20log(processRes[1].errors);

update Example:

1//create an account
2  var account = new sforce.SObject("Account");
3  account.Name = "myName";
4  account.Phone = "2837484894";
5  result = sforce.connection.create([account]);
6 
7  //update that account
8  account.id = result[0].id;
9  account.Phone = "12398238";
10  result = sforce.connection.update([account]);
11 
12  if (result[0].getBoolean("success")) {
13    log("account with id " + result[0].id + " updated");
14  } else {
15    log("failed to update account " + result[0]);
16  }

undelete Example:

1var account = new sforce.SObject("Account");
2  account.Name = "account to delete";
3  account.Phone = "2837484894";
4  result = sforce.connection.create([account]);
5  account.id = result[0].id;
6  log("account created " + account);
7 
8  result = sforce.connection.deleteIds([account.id]);
9  if (!result[0].getBoolean("success")) throw "delete failed";
10  log("account deleted " + result);
11 
12  result = sforce.connection.undelete([account.id]);
13  if (!result[0].getBoolean("success")) throw "undelete failed";
14  log("account undeleted " + result[0]);

upsert Example:

1var account = new sforce.SObject("Account");
2account.Name = "TestingAjaxUpsert";
3account.Phone = "2837484894";
4// this will insert an account
5var result = sforce.connection.upsert("Id", [account]);
6
7account.Id = result[0].id;
8account.Name = "TestingAjaxUpsert2";
9// this will update the account
10result = sforce.connection.upsert("Id", [account]);
11
12if(result[0].getBoolean("success") && result[0].id == account.Id) {
13log("upsert updated the account as expected");
14}
15else {
16log("upsert failed!");
17}

retrieve Example:

1var account = new sforce.SObject("Account");
2  account.Name = "retrieve update test";
3  account.Phone = "2837484894";
4  var result = sforce.connection.create([account]);
5  if (result[0].getBoolean("success") == false) throw "create failed";
6  log("account created " + result[0]);
7 
8  result = sforce.connection.retrieve("Name,Phone", "Account", [result[0].id]);
9  if (result[0] == null) throw "retrive failed";
10  log("account retrieved: " + result[0]);
11 
12  result[0].Phone = "111111111111";
13  result = sforce.connection.update(result);
14  if (result[0].getBoolean("success") == false) throw "update failed";
15  log("account updated: " + result[0]);

search Example:

1var result = sforce.connection.search(
2    "find {manoj} in Name fields RETURNING Account(name, id)");
3  
4  if (result) {
5     var records = result.getArray("searchRecords");
6 
7     for (var i=0; i<records.length; i++) {
8       var record = records[i].record;
9       log(record.Id + " -- " + record.Name);
10     }
11  }

getDeleted Example:

1var start = new Date();
2  var end = new Date();
3  start.setDate(end.getDate() - 1);
4 
5  var result = sforce.connection.getDeleted("Account", start, end);
6 
7  var records = result.getArray("deletedRecords");
8 
9  log("following records are deleted:");
10 
11  for (var i=0; i<records.length; i++) {
12    log(records[i].id);
13  }

getUpdated Example:

1var start = new Date();
2  var end = new Date();
3  start.setDate(end.getDate() - 1);
4 
5  var result = sforce.connection.getUpdated("Account", start, end);
6 
7  var records = result.getArray("ids");
8 
9  log("following records are updated:");
10  for (var i=0; i<records.length; i++) {
11    log(records[i]);
12  }

convertLead Example:

1var account = new sforce.SObject("Account");
2  account.Name = "convert lead sample";
3  account.Phone = "2837484894";
4  result = sforce.connection.create([account]);
5  account.Id = result[0].id;
6 
7  var lead = new sforce.SObject("Lead");
8  lead.Country = "US";
9  lead.Description = "This is a description";
10  lead.Email = "someone@somewhere.com";
11  lead.FirstName = "first";
12  lead.LastName = "last";
13  lead.Company = account.Name;
14  result = sforce.connection.create([lead]);
15  lead.Id = result[0].id;
16 
17  var convert = new sforce.LeadConvert();
18  convert.accountId = account.Id;
19  convert.leadId = lead.Id;
20  convert.convertedStatus = "Qualified";
21 
22  result = sforce.connection.convertLead([convert]);
23  if (result[0].getBoolean("success")) {
24    log("lead converted " + result[0]);
25  } else {
26    log("lead convert failed " + result[0]);
27  }

Describe Examples

describeSObject Account Example:

1var result = sforce.connection.describeSObject("Account");
2 
3  log(result.label + " : " + result.name + " : ");
4 
5  log("---------- fields ---------");
6  for (var i=0; i<result.fields.length; i++) {
7    var field = result.fields[i];
8    log(field.name + " : " + field.label + " : " + field.length + " : ");
9  }
10 
11  log("---------- child relationships ---------");
12
13  for (var i=0; i<result.childRelationships.length; i++) {
14    var cr = result.childRelationships[i];
15    log(cr.field + " : " + cr.childSObject);
16  }
17 
18  log("---------- record type info ----------");
19  for (var i=0; i<result.recordTypeInfos.length; i++) {
20    var rt = result.recordTypeInfos[i];
21    log(rt.name);
22  }

describeSObjects Example:

1var result = sforce.connection.describeSObjects(["Account", "Contact"]);
2 
3  for (var i=0; i<result.length; i++) {
4    log(result[i].label + " : " + result[i].name + " : ");
5  }

describeGlobal Example:

1var result = sforce.connection.describeGlobal();
2 
3  var sobjects = result.getArray("sobjects");
4  for (var i=0; i<sobjects.length; i++) {
5    log(sobjects[i].name);
6  }

describeLayout Example:

1var result = sforce.connection.describeLayout("Account");
2
3  var layouts = result.getArray("layouts");
4 
5  for (var i=0; i<layouts.length; i++) {
6    var layout = layouts[0];
7    detailLayoutSections(layout.detailLayoutSections);
8  }
9 
10   function detailLayoutSections(sections) {
11    for (var i=0; i<sections.length; i++) {
12      var section = sections[i];
13      log(section.columns + ":" + section.heading + ":");
14      layoutRows(section.getArray("layoutRows"));
15    }
16  }
17 
18  function layoutRows(rows) {
19    for (var i=0; i<rows.length; i++) {
20      var row = rows[i];
21      layoutItems(row.getArray("layoutItems"));
22    }
23  }
24 
25  function layoutItems(items) {
26    for (var i=0; i<items.length; i++) {
27      var item = items[i];
28      log("  " + item.label);
29    }
30  }

describeTabs Example:

1var result = sforce.connection.describeTabs();
2 
3  for (var i=0; i<result.length; i++) {
4    var tabSet = result[i];
5    log( tabSet.label);
6    displayTabs(tabSet.get("tabs"));
7  }
8 
9  function displayTabs(tabs) {
10    for( var i=0; i<tabs.length; i++) {
11      var tab = tabs[i];
12      log( "  " + tab.label + " " + tab.url);
13    }
14  }

Utility Examples

getServerTimestamp Example:

1var result = sforce.connection.getServerTimestamp();
2  log(result.timestamp);

getUserInfo Example:

1var user = sforce.connection.getUserInfo();
2  log("Hello " + user.userName);
3  log("Your email id is " + user.userEmail);
4  log("and you work for " + user.organizationName);

resetPassword and setPassword Example:

1var username = "myname@myemail.com";
2 
3  var result = sforce.connection.query(
4    "SELECT ID from User WHERE User.username='" + username + "'");
5 
6  var records = result.getArray("records");
7  if (records.length != 1) throw "unable to find user";
8  var id = records[0].Id;
9 
10  sforce.connection.resetPassword(id);
11  sforce.connection.setPassword(id, "123456");

sendEmail Example:

1// single mail request
2var singleRequest = new sforce.SingleEmailMessage();
3singleRequest.replyTo = "jsmith@acme.com";
4singleRequest.subject = "sent through ajax test driver";
5
6singleRequest.plainTextBody = "this test went through ajax";
7singleRequest.toAddresses = ["noone@nowhere.com"];
8
9// mass mail request - need to get email template ID
10
11var queryResponse = sforce.connection.query("select id from emailtemplate");
12var templatedId = queryResponse.getArray("records")[0].Id;
13var massRequest = new sforce.MassEmailMessage();
14massRequest.targetObjectIds = [globalContact.id];
15massRequest.replyTo = "jsmith@acme.com";
16massRequest.subject = "sent through ajax test driver";
17massRequest.templateId = templateId;
18
19var sendMailRes = sforce.connection.sendEmail([singleRequest, massRequest]);

The following sample shows best practice techniques by putting all processing in a function that does not execute until the HTML page is loaded.

1<html>
2<head>
3  <script src="/soap/ajax/33.0/connection.js"></script>
4  <script>
5    var contactId = "{!Contact_ID}";
6    function initPage() {
7 try{
8        var contact = sforce.connection.retrieve("AccountId", "Contact", [contactId])[0];
9        var accountsRetrieved = sforce.connection.retrieve("Id, Name, Industry, 
10                                LastModifiedDate", "Account", [contact.AccountId]);
11        if (accountsRetrieved.length > 0) {
12             var account = accountsRetrieved.records[0];
13             document.body.innerHTML += "Account name: <a href='/" + account.Id;
14             document.body.innerHTML += "' target='_blank'>" + account.Name + "</a><br>;
15             document.body.innerHTML += "Industry: " + account.Industry + "<br>";
16        }
17 } catch (e) {
18    document.body.innerHTML += "Error retrieving contact information";
19    document.body.innerHTML += "<br>Fault code: " + e.faultcode;
20    document.body.innerHTML += "<br>Fault string: " + e.faultstring;
21    }
22 }
23 </script>
24</head>
25<body onload="initPage();">
26 
27</body>
28</html>