SF菜鸟笔记【Ajex调用Salesforce API】

网络来源 http://www.salesforce.com/us/developer/docs/ajax/Content/sforce_api_ajax_more_samples.htm


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);
  }
Note
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.

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/32.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 οnlοad="initPage();">
 
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值