Examples of Synchronous Calls

Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.

Note

Data Call Examples

login Example:

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

query Example:

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

queryMore Example:

var result = sforce.connection.query("select name, id from account");
 
  var queryMore = true;
  while (queryMore) {
      var records = result.getArray("records");
      var sb = new sforce.StringBuffer();
 
      for (var i = 0; i < records.length; i++) {
        sb.append(records[i].Name).append(",");
      }
 
      log(records.length);
      log(sb.toString());
 
      if (result.getBoolean("done")) {
        queryMore = false;
      } else {

        result = sforce.connection.queryMore(result.queryLocator);
    }
  }

queryAll Example:

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

Relationship Query Example—Child to Parent:

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

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:

var result = sforce.connection.query("select a.Name, a.Industry, " +
    "(select c.LastName, c.LeadSource from a.Contacts c) " +
    "from account a order by industry limit 100");
 
  var ait = new sforce.QueryResultIterator(result);
 
  while(ait.hasNext()) {
    var account = ait.next();
 
    var contacts = [];
    if (account.Contacts) {
      var cit = new sforce.QueryResultIterator(account.Contacts);
      while(cit.hasNext()) {
        var contact = cit.next();
        contacts.push(contact.LastName);
      }
    }
 
    log(account.Name + ": " + contacts.join(","));
  }

create Example:

var account = new sforce.SObject("Account");
  account.Name = "my new account";
  var result = sforce.connection.create([account]);
 
  if (result[0].getBoolean("success")) {
    log("new account created with id " + result[0].id);
  } else {
    log("failed to create account " + result[0]);
  }

Batch create Example:

var accounts = [];
 
  for (var i=0; i<10; i++) {
    var account = new sforce.SObject("Account");
    account.Name = "my new account " + i;
    accounts.push(account);
  }
 
  var result = sforce.connection.create(accounts);
 
  for (var i=0; i<result.length; i++) {
    if (result[i].getBoolean("success")) {
      log("new account created with id " + result[i].id);
    } else {
      log("failed to create account " + result[i]);
    }
  }

delete Example:

//create an example account
  var account = new sforce.SObject("Account");
  account.Name = "my new account";
  var result = sforce.connection.create([account]);
 
  if (result[0].getBoolean("success")) {
    log("new account created with id " + result[0].id);
    account.Id = result[0].id;
  } else {
    throw ("failed to create account " + result[0]);
  }
 
  //now delete the example account
  var delResult = sforce.connection.deleteIds([account.Id]);
  if (delResult[0].getBoolean("success")) {
    log("account with id " + result[0].id + " deleted");
  } else {
    log("failed to delete account " + result[0]);
  }

merge Example:

//create two accounts
  var account1 = new sforce.SObject("Account");
  account1.Name = "myName";
  account1.Phone = "2837484894";
 
  var account2 = new sforce.SObject("Account");
  account2.Name = "anotherName";
  account2.Phone = "938475950";
 
  var result = sforce.connection.create([account1, account2]);
  if (result.length != 2) throw "create failed";
 
  account1.id = result[0].id;
  account2.id = result[1].id;
 
  //create merge request
  var request = new sforce.MergeRequest();
  request.masterRecord = account1;
  request.recordToMergeIds = account2.id;
 
  //call merge
  result = sforce.connection.merge([request]);
 
  if (result[0].getBoolean("success")) {
    log("merge success " + result[0]);
  } else {
    log("merge failed " + result[0]);
  }
process Example:
var request = new sforce.ProcessSubmitRequest();
request.objectId = "id of object that has a workflow rule on it"; // valid id
request.comments = "automated approval";

var request2 = new sforce.ProcessSubmitRequest();
request2.objectId = 'id of object that does NOT have a workflow rule on it' ; // valid id, not useful for workflow
request2.comments = "approval that will fail";

var processRes = sforce.connection.process([request, request2]);

if(!processRes[0].getBoolean('success')){
            log("The first process request failed and it should not have");
}

if(processRes[1].getBoolean('success')){
            log("The second process request succeeded and it should not have");
}

log(processRes[0].errors);
log(processRes[1].errors);

update Example:

//create an account
  var account = new sforce.SObject("Account");
  account.Name = "myName";
  account.Phone = "2837484894";
  result = sforce.connection.create([account]);
 
  //update that account
  account.id = result[0].id;
  account.Phone = "12398238";
  result = sforce.connection.update([account]);
 
  if (result[0].getBoolean("success")) {
    log("account with id " + result[0].id + " updated");
  } else {
    log("failed to update account " + result[0]);
  }

undelete Example:

var account = new sforce.SObject("Account");
  account.Name = "account to delete";
  account.Phone = "2837484894";
  result = sforce.connection.create([account]);
  account.id = result[0].id;
  log("account created " + account);
 
  result = sforce.connection.deleteIds([account.id]);
  if (!result[0].getBoolean("success")) throw "delete failed";
  log("account deleted " + result);
 
  result = sforce.connection.undelete([account.id]);
  if (!result[0].getBoolean("success")) throw "undelete failed";
  log("account undeleted " + result[0]);

upsert Example:

var account = new sforce.SObject("Account");
account.Name = "TestingAjaxUpsert";
account.Phone = "2837484894";
// this will insert an account
var result = sforce.connection.upsert("Id", [account]);

account.Id = result[0].id;
account.Name = "TestingAjaxUpsert2";
// this will update the account
result = sforce.connection.upsert("Id", [account]);

if(result[0].getBoolean("success") && result[0].id == account.Id) {
log("upsert updated the account as expected");
}
else {
log("upsert failed!");
}

retrieve Example:

var account = new sforce.SObject("Account");
  account.Name = "retrieve update test";
  account.Phone = "2837484894";
  var result = sforce.connection.create([account]);
  if (result[0].getBoolean("success") == false) throw "create failed";
  log("account created " + result[0]);
 
  result = sforce.connection.retrieve("Name,Phone", "Account", [result[0].id]);
  if (result[0] == null) throw "retrive failed";
  log("account retrieved: " + result[0]);
 
  result[0].Phone = "111111111111";
  result = sforce.connection.update(result);
  if (result[0].getBoolean("success") == false) throw "update failed";
  log("account updated: " + result[0]);

search Example:

var result = sforce.connection.search(
    "find {manoj} in Name fields RETURNING Account(name, id)");
  
  if (result) {
     var records = result.getArray("searchRecords");
 
     for (var i=0; i<records.length; i++) {
       var record = records[i].record;
       log(record.Id + " -- " + record.Name);
     }
  }

getDeleted Example:

var start = new Date();
  var end = new Date();
  start.setDate(end.getDate() - 1);
 
  var result = sforce.connection.getDeleted("Account", start, end);
 
  var records = result.getArray("deletedRecords");
 
  log("following records are deleted:");
 
  for (var i=0; i<records.length; i++) {
    log(records[i].id);
  }

getUpdated Example:

var start = new Date();
  var end = new Date();
  start.setDate(end.getDate() - 1);
 
  var result = sforce.connection.getUpdated("Account", start, end);
 
  var records = result.getArray("ids");
 
  log("following records are updated:");
  for (var i=0; i<records.length; i++) {
    log(records[i]);
  }

convertLead Example:

var account = new sforce.SObject("Account");
  account.Name = "convert lead sample";
  account.Phone = "2837484894";
  result = sforce.connection.create([account]);
  account.Id = result[0].id;
 
  var lead = new sforce.SObject("Lead");
  lead.Country = "US";
  lead.Description = "This is a description";
  lead.Email = "someone@somewhere.com";
  lead.FirstName = "first";
  lead.LastName = "last";
  lead.Company = account.Name;
  result = sforce.connection.create([lead]);
  lead.Id = result[0].id;
 
  var convert = new sforce.LeadConvert();
  convert.accountId = account.Id;
  convert.leadId = lead.Id;
  convert.convertedStatus = "Qualified";
 
  result = sforce.connection.convertLead([convert]);
  if (result[0].getBoolean("success")) {
    log("lead converted " + result[0]);
  } else {
    log("lead convert failed " + result[0]);
  }

Describe Examples

describeSObject Account Example:

var result = sforce.connection.describeSObject("Account");
 
  log(result.label + " : " + result.name + " : ");
 
  log("---------- fields ---------");
  for (var i=0; i<result.fields.length; i++) {
    var field = result.fields[i];
    log(field.name + " : " + field.label + " : " + field.length + " : ");
  }
 
  log("---------- child relationships ---------");

  for (var i=0; i<result.childRelationships.length; i++) {
    var cr = result.childRelationships[i];
    log(cr.field + " : " + cr.childSObject);
  }
 
  log("---------- record type info ----------");
  for (var i=0; i<result.recordTypeInfos.length; i++) {
    var rt = result.recordTypeInfos[i];
    log(rt.name);
  }

describeSObjects Example:

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

describeGlobal Example:

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

describeLayout Example:

var result = sforce.connection.describeLayout("Account");

  var layouts = result.getArray("layouts");
 
  for (var i=0; i<layouts.length; i++) {
    var layout = layouts[0];
    detailLayoutSections(layout.detailLayoutSections);
  }
 
   function detailLayoutSections(sections) {
    for (var i=0; i<sections.length; i++) {
      var section = sections[i];
      log(section.columns + ":" + section.heading + ":");
      layoutRows(section.getArray("layoutRows"));
    }
  }
 
  function layoutRows(rows) {
    for (var i=0; i<rows.length; i++) {
      var row = rows[i];
      layoutItems(row.getArray("layoutItems"));
    }
  }
 
  function layoutItems(items) {
    for (var i=0; i<items.length; i++) {
      var item = items[i];
      log("  " + item.label);
    }
  }

describeTabs Example:

var result = sforce.connection.describeTabs();
 
  for (var i=0; i<result.length; i++) {
    var tabSet = result[i];
    log( tabSet.label);
    displayTabs(tabSet.get("tabs"));
  }
 
  function displayTabs(tabs) {
    for( var i=0; i<tabs.length; i++) {
      var tab = tabs[i];
      log( "  " + tab.label + " " + tab.url);
    }
  }

Utility Examples

getServerTimestamp Example:

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

getUserInfo Example:

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

resetPassword and setPassword Example:

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

sendEmail Example:

// single mail request
var singleRequest = new sforce.SingleEmailMessage();
singleRequest.replyTo = "jsmith@acme.com";
singleRequest.subject = "sent through ajax test driver";

singleRequest.plainTextBody = "this test went through ajax";
singleRequest.toAddresses = ["noone@nowhere.com"];

// mass mail request - need to get email template ID

var queryResponse = sforce.connection.query("select id from emailtemplate");
var templatedId = queryResponse.getArray("records")[0].Id;
var massRequest = new sforce.MassEmailMessage();
massRequest.targetObjectIds = [globalContact.id];
massRequest.replyTo = "jsmith@acme.com";
massRequest.subject = "sent through ajax test driver";
massRequest.templateId = templateId;

var 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.

<html>
<head>
  <script src="/soap/ajax/64.0/connection.js"></script>
  <script>
    var contactId = "{!Contact_ID}";
    function initPage() {
 try{
        var contact = sforce.connection.retrieve("AccountId", "Contact", [contactId])[0];
        var accountsRetrieved = sforce.connection.retrieve("Id, Name, Industry, 
                                LastModifiedDate", "Account", [contact.AccountId]);
        if (accountsRetrieved.length > 0) {
             var account = accountsRetrieved.records[0];
             document.body.innerHTML += "Account name: <a href='/" + account.Id;
             document.body.innerHTML += "' target='_blank'>" + account.Name + "</a><br>;
             document.body.innerHTML += "Industry: " + account.Industry + "<br>";
        }
 } catch (e) {
    document.body.innerHTML += "Error retrieving contact information";
    document.body.innerHTML += "<br>Fault code: " + e.faultcode;
    document.body.innerHTML += "<br>Fault string: " + e.faultstring;
    }
 }
 </script>
</head>
<body onload="initPage();">
 
</body>
</html>