AJAX Toolkit 문서 원본 보기
←
AJAX Toolkit
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
세일즈포스닷컴에서 제공하는 AJAX Toolkit을 정리한다. ==Ajax Toolkit== *AJAX Toolkit <script type="text/javascript"> var __sfdcSessionId = "{!GETSESSIONID()}"; </script> <apex:includeScript value="/soap/ajax/22.0/connection.js"/> <apex:includeScript value="/soap/ajax/22.0/apex.js"/> <script type=“text/javascript”> sforce.connection.init(null, “{!URLFOR(‘/services/Soap/u/13.0’)}"); sforce.connection.login(아이디, 암호); var result = sforce.connection.query( “select Id from Account where ~ order by ~ limit ~ "); var records = result.getArray("records"); for (var i=0; i< records.length; i++) { var record = records[i]; } </script> var account = new sforce.SObject("Account"); account.type = “Account”; account.Name = "my new account"; var result = sforce.connection.create([account]); if (result[0].getBoolean("success")) { } else { } result = sforce.connection.update([account]); if (result[0].getBoolean("success")) { } else { } var delResult = sforce.connection.deleteIds([account.Id]); if (delResult[0].getBoolean("success")) { } else { } *Debug 모드 설정 sforce.debug.trace = true; sforce.debug.log("남길 로그"); ==Browser - jQuery== *[[jQuery]] 1.6.2 :*http://jquery.com/ :*http://docs.jquery.com/Main_Page *jQuery 사용 사례 <apex:page> <apex:includeScript value="{!URLFOR($Resource.jQuery, 'jquery.min.js')}"/> <apex:stylesheet value="{!URLFOR($Resource.ExtJS40, 'resources/css/ext-all.css')}"/> <apex:includeScript value="{!URLFOR($Resource.ExtJS40, 'ext-all.js')}"/> <apex:includeScript value="{!URLFOR($Resource.ExtJS40, 'locale/ext-lang-ko.js')}"/> <script type="text/javascript"> Ext.onReady(function() { Ext.Msg.alert(“pnus", "Hello World!"); }); </script> </apex:page> ==Browser - Ext-JS== *Ext JS 4.0.1 :*http://www.extjs.com/ :*http://www.extjs.com/deploy/dev/docs/ *Ext-JS 사용 사례 <apex:page> <apex:includeScript value="{!URLFOR($Resource.jQuery, 'jquery.min.js')}"/> <apex:stylesheet value="{!URLFOR($Resource.ExtJS40, 'resources/css/ext-all.css')}"/> <apex:includeScript value="{!URLFOR($Resource.ExtJS40, 'ext-all.js')}"/> <apex:includeScript value="{!URLFOR($Resource.ExtJS40, 'locale/ext-lang-ko.js')}"/> <script type="text/javascript"> Ext.onReady(function() { Ext.Msg.alert(“pnus", "Hello World!"); }); </script> </apex:page> ==Apex API== SControl이나 JavaScript에서 사용할 수 있는 Apex API는 다양한 기능이 많이 있지만 여기서는 아주 간단히 조회/등록/수정/삭제 부분만 정리를 한다. * 공통 사항 :Apex API를 사용하기 위해서는 다음을 반드시 포함하여야 한다. <script type="text/JavaScript" src="/soap/ajax/13.0/connection.js"></script> <script type="text/JavaScript" src="/soap/ajax/13.0/apex.js"></script> *VisualForce Page에서 사용하기 위해서 다음과 같이 선언 한다. <apex:page showHeader="false" > <script src="../../soap/ajax/21.0/connection.js"></script> </apex:page> * Debug 모드 설정 :Apex API를 호출하기 전에 sforce.debug.trace를 true로 설정한다. :이후 Debug 창에 로그가 남으며 사용자 로그를 남기고 싶을 경우에는 sforce.debug.log() 함수를 사용한다. sforce.debug.trace = true; sforce.debug.log("남길 로그"); * 로그인 :SControl에서 사용할 경우에는 로그인이 필요 없지만 기타 환경에서는 로그인을 하여 세일즈포스닷컴에 접속한다. sforce.connection.init(null, "https://emea.salesforce.com/services/Soap/u/13.0"); sforce.connection.login(아이디, 암호); * 조회 (동기식) var result = sforce.connection.query(“select Id from Account where ~ order by ~ limit ~ "); records = result.getArray("records"); for (var i=0; i< records.length; i++) { var record = records[i]; window.alert(record.Id); } * 조회 (비동기식) var callback = { onSuccess : funcSuccess, onFailure : funcFailure, source : {} }; sforce.connection.query(“select Id from Account where ~ order by ~ limit ~ “, callback); function funcSuccess(result, source) { //--- 여기에 조회가 성공하였을 때 필요한 코딩을 한다. } function funcFailure(error, source) { //--- 여기에 조회가 실패하였을 때 필요한 코딩을 한다. } * 등록 (표준 개체) var account = new sforce.SObject("Account"); account.Name = "my new account"; var result = sforce.connection.create([account]); if (result[0].getBoolean("success")) { } else { } * 등록 (사용자 정의 개체) var obj= new sforce.SObject(); obj.type = “KnowledgeForce__c”; obj.Name = "my new Knowledge"; var result = sforce.connection.create([obj]); * 수정 var account = new sforce.SObject("Account"); account.Name = "myName"; account.Phone = "2837484894"; result = sforce.connection.create([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]); } * 삭제 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]); } ==AJAX Toolkit Developer's Guide, Ver 9.0 Spring'07== * Data Types Date : getDate, getDateTime Int : getInt Float : getFloat Boolean : getBoolean Array : getArray getBase64Binary * Sample AJAX <script src="/js/dojo/0.3.1/dojo.js" type="text/JavaScript"></script> <script src="/soap/ajax/9.0/connection.js" type="text/JavaScript"></script> try { sforce.connection.login("~", "~"); sforce.debug.open(); sforce.debug.log("~"); } catch(error) { error.faultcode.indexOf("INVALID_LOGIN") } result = sforce.connection.query("~ limit 30"); records = result.getArray("records"); sforce.connection.query("~ limit 30", {onSuccess:handleSuccess, onFailure:handleFailure}); //--- handleSuccess(result), onFailure(error) var result = sforce.connection.search("find {manoj} in Name fields RETURNING Account (name, id)"); var data = new sforce.QueryResultIterator(result); data.hasNext(); var record = data.next(); account.Name account["Name"] var account = new sforce.SObject("Account"); var result = sforce.connection.create([account]); sforce.connection.update([account.Id]); sforce.connection.upsert("Id", [account]); sforce.connection.deleteIds([account.Id]); sforce.connection.undelete([account.Id]); result[0].getBoolean("success"); var req = new sforce.MergeRequest(); req.masterRecord = account1; req.recordToMergeIds = account2.id; result = sforce.connection.merge([req]); result = sforce.connection.retrive("Name, Phone", "Account", [result[0].id]); var result = sforce.connection.getDeleted("Account", startDate, endDate); var result = sforce.connection.getUpdated("Account", startDate, endDate); var convert = new sforce.LeadConvert(); convert.accountId = account.Id; convert.leadId = lead.Id; convert.convertedStatus = "Qualified"); result = sforce.connection.convertLead([convert]); sforce.connection.getServerTimestamp(); sforce.connection.getUserInfo(); var result sforce.connection.query("~ like '~%~'", {onSuccess:funcSuccess, onFailure:funcFailure, timeout:100}); - Describe (Page 20 참조) * 메일 발송 var req = new sforce.SingleEmailMessage(); req.replyTo = "~"; req.subject = "~"; req.plainTextBody = "~"; req.toAddresses = ["~"]; var tmpRes = sforce.connection.query("select id form emailtemplate"); var templateId = tmpRes.getArray("records")[0].Id; var massReq = new sforce.MassEmailMessage(); massReq.targetObjectIds = [globalContact.id]; massReq.replyTo = "~"; massReq.subject = "~"; massReq.templateId = templateId; var sendMailRes = sforce.connection.sendEmail([req, massReq]); *Debug sforce.debug.log(myVar); sforce.debug.open(); *Select :*query 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 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 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(",")); } *Insert :*create 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 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]); } } *Update var account = new sforce.SObject("Account"); account.Name = "myName"; account.Phone = "2837484894"; result = sforce.connection.create([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]); } *Delete 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 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]); } ==Apex Code JavaScript== *Setup -> App Setup -> Build -> Code *Setup -> App Setup -> Customize -> [Accounts] -> Buttons and Links -> Custom Buttons and Links *AJAX <script type="text/JavaScript" src="/soap/ajax/12.0/connection.js"></script> <script type="text/JavaScript" src="/soap/ajax/12.0/apex.js"></script> sforce.apex.executeAnonymous(<script>); sforce.apex.execute("myPackage", "makeContact", {a:Smith, b:account}); sforce.debug.trace = true; var result = sforce.apex.execute('HelloWorld2' , 'sayHelloWorld', {arg:"new Apex Code user!"}); sforce.apex.debug=true; var request = new sforce.RunTestsRequest(); request.allTests = false; request.classes = ['HelloWorld2']; var result_2= sforce.apex.runTests(request); == 참고 문헌 == *[[AJAX|AJAX]] : AJAX에 대한 기본 정리 *[http://wiki.apexdevnet.com/index.php/Ajax_Tools AJAX Tools 사이트] *[http://wiki.apexdevnet.com/index.php/Web_Services_API Web Services API 매뉴얼] : S-Control(JavaScript), WScript, Java, C#에서 API 사용 == 지원 업체 == {{지원업체}} [[Category:Salesforce|Category:Salesforce]]<br/>[[Category:CRM|Category:CRM]]<br/>[[Category:Cloud|Category:Cloud]]
이 문서에서 사용한 틀:
틀:지원업체
(
원본 보기
)
AJAX Toolkit
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보