网络来源 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);
}
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]);
}
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>