พฤศจิกายน 2007
บทนำ
Salesforce.com และ Google โฮสต์แอปพลิเคชันยอดนิยม "ซอฟต์แวร์ในฐานะบริการ" และทั้งสององค์กรมี API ที่ช่วยให้นักพัฒนาซอฟต์แวร์เข้าถึงที่เก็บข้อมูลขนาดใหญ่ซึ่งขับเคลื่อนแอปพลิเคชันเหล่านี้ได้ และสิ่งที่เริ่มน่าสนใจเมื่อเรารวม API ทั้ง 2 ชุด G Suite ยังคงมีการใช้งานมากขึ้นอย่างต่อเนื่องในการตั้งค่าองค์กรและ Salesforce.com ได้สร้างแพลตฟอร์มขนาดใหญ่สําหรับการสร้างแอปพลิเคชันธุรกิจที่กําหนดเอง นักพัฒนาจึงมีโอกาสมากมาย (รวมคุณไว้แล้ว) ที่จะผสานพลังของ Google กับ Salesforce.com
บทความนี้จะแสดงวิธีการใช้ RESTful Google Data API เพื่อเริ่มสร้างแมชอัประดับองค์กร แม้ว่าคุณจะเพิ่งเริ่มต้นใช้งานแพลตฟอร์ม Salesforce.com หรือโปรโตคอลข้อมูลของ Google เราจะช่วยคุณตั้งค่าสภาพแวดล้อมการพัฒนา ติดตั้ง Salesforce.com และ Google แมชอัปที่มีอยู่ แล้วเขียนด้วยตัวเอง
สวัสดี Salesforce.com!
หากคุณเป็นมือใหม่อย่าง Salesforce.com คุณจะต้องเริ่มโดยการลงชื่อสมัครใช้บัญชีนักพัฒนาแอปใน ADN ซึ่งเป็นเครือข่าย Apex Developer บัญชีนักพัฒนาแอปให้คุณใช้บัญชี Salesforce.com ที่มีฟีเจอร์เต็มรูปแบบ และเข้าถึง Apex Wiki และกระดานสนทนา
ถัดไปคุณจะต้องได้รับชุดเครื่องมือ Apex สําหรับ Eclipse ชุดเครื่องมือต้องใช้ Java 1.5 และ Eclipse 3.2.2 หรือดีกว่า หากคุณรู้จัก Eclipse เว็บไซต์การอัปเดตซอฟต์แวร์สําหรับชุดเครื่องมือนี้คือ http://www.adnsandbox.com/eclipsetoolkit/10.0/
หากคุณไม่คุ้นเคยกับปลั๊กอิน Eclipse หรือมีข้อผิดพลาดเกิดขึ้นระหว่างการติดตั้ง Apex wiki จะมีวิธีการติดตั้งโดยละเอียด
เมื่อติดตั้งชุดเครื่องมือแล้ว คุณจะเข้าถึงเนื้อหาช่วยเหลือของ Apex ที่ผสานรวมกับระบบความช่วยเหลือของ Eclipse ได้ ใน Eclipse ให้ไปที่ความช่วยเหลือ | เนื้อหาความช่วยเหลือ | Apex Toolkit สําหรับ Eclipse เพื่อดูเนื้อหานี้ หนึ่งในแหล่งข้อมูลความช่วยเหลือคือบทแนะนําการใช้งานสั้นๆ ที่จะแสดงวิธีสร้างโปรเจ็กต์ใหม่และเพิ่ม S-Control, คลาส และทริกเกอร์ หากไม่เคยใช้โค้ด Apex มาก่อน คุณควรศึกษาบทแนะนํานี้และสร้างโปรเจ็กต์ Apex ก่อนดําเนินการต่อ
การส่งออกกิจกรรมไปยัง Google ปฏิทิน
Ron Hess เขียนแอปพลิเคชัน Google Calendar Mash-up ที่ช่วยให้คุณส่งออกกิจกรรมจาก Salesforce.com ไปยัง Google ปฏิทินได้ นอกจากนี้ Ron ยังเขียนบทความที่อธิบายวิธีการทํางานของแมชอัปดังกล่าวด้วย แอปพลิเคชัน Google สเปรดชีตที่ฉันจะแสดงวิธีสร้างในภายหลังหลังจากการผสมข้อมูล Google ปฏิทินของ Ron ขอบคุณครับ Ron
หากคุณเป็นผู้ใช้ Salesforce.com คุณอาจผสานรวมและใช้แอปพลิเคชัน Google ปฏิทินของ Ron ได้โดยไม่ต้องบอกวิธีการใดๆ ตอนแรกก็ต้องการความช่วยเหลือเล็กๆ น้อยๆ นี่เลย นี่คือสิ่งที่ฉันเจอกับแอปของ Ron
- ติดตั้งแอปพลิเคชัน
- ไปที่หน้า Google ปฏิทิน Mash-up แล้วคลิกดาวน์โหลดเลย
- ป้อนข้อมูลเข้าสู่ระบบ ADN แล้วคลิกต่อไป
- อ่านข้อกําหนดและเงื่อนไข แล้วคลิกต่อไป
- คลิกถัดไปผ่านหน้า "ตรวจสอบเนื้อหาแพ็กเกจ"
- เลือกระดับความปลอดภัยแล้วคลิกถัดไป
- คลิกติดตั้ง
- กําหนดค่าพร็อกซี AJAX ของ Salesforce.com
- ในเมนู "การตั้งค่าการดูแลระบบ" ให้คลิกการควบคุมความปลอดภัย | การตั้งค่าเว็บไซต์ระยะไกล
- คลิกเว็บไซต์ระยะไกลใหม่
- ป้อน Google เป็น "ชื่อเว็บไซต์ระยะไกล" และสําหรับ "URL ของเว็บไซต์ระยะไกล" ให้ใช้ https://www.google.com
- คลิกบันทึก
- เพิ่มปุ่ม "เพิ่มลงใน Google" ในหน้ารายละเอียดกิจกรรม
- ในเมนู "การตั้งค่าแอป" ให้คลิกปรับแต่ง | กิจกรรม | เลย์เอาต์หน้าของกิจกรรม
- คลิกแก้ไขในแถว "การออกแบบกิจกรรม"
- ดับเบิลคลิกพื้นที่ "ปุ่มหน้ารายละเอียด"
- ไฮไลต์ "เพิ่มลงใน Google" แล้วคลิกลูกศรขวา (>) เพื่อเพิ่มปุ่ม
- คลิกตกลง
- คลิกบันทึกในหน้า "พร็อพเพอร์ตี้เลย์เอาต์หน้าเว็บ"
- ส่งออกเหตุการณ์
- คลิกหน้าแรกที่ด้านบนซ้ายเพื่อดูปฏิทิน
- หากไม่มีเหตุการณ์ ให้คลิกเหตุการณ์ใหม่เพื่อสร้างเหตุการณ์
- คลิกเหตุการณ์เพื่อดูหน้ารายละเอียดกิจกรรม
- คลิกปุ่มเพิ่มลงใน Google
- คลิกตกลงผ่านการแจ้งเตือน JavaScript
- ลงชื่อเข้าใช้ด้วยชื่อผู้ใช้และรหัสผ่าน Google ของคุณ
- คลิกให้สิทธิ์เข้าถึงเพื่อให้สิทธิ์แอปพลิเคชัน SalesForce เขียนใน Google ปฏิทินของคุณ
- ดูกิจกรรมใน Google ปฏิทิน
การสร้างแอปพลิเคชัน Google สเปรดชีต
โอเค คุณอาจเบื่อที่จะต้องคลิกหน้า Salesforce.com และพร้อมที่จะเขียนโค้ดแล้ว เริ่มการทํางานของ Eclipse อีกครั้ง แล้วคุณจะเห็นว่าโปรเจ็กต์ Apex ที่คุณสร้างไว้ตอนนี้มีแอป Google ปฏิทินของ S-Controls สําหรับ Ron นั่นเป็นเพราะ Apex Toolkit สําหรับ Eclipse ซิงค์ข้อมูลกับ Salesforce.com-pretty เจ๋งๆ มาอย่างต่อเนื่องใช่ไหม
คุณสามารถสร้างแอป Google Data ของคุณเองโดยใช้ฟังก์ชันบางอย่างของ Google ปฏิทินมากเกินไป เช่น การควบคุมการตรวจสอบสิทธิ์ ในเนื้อหาที่เหลือของส่วนนี้ เราจะแสดงวิธีสร้างแอปที่ส่งออกรายชื่อติดต่อของ Salesforce.com ไปยังสเปรดชีตของ Google
การเผยแพร่ S-Control แบบง่าย
S-Control คือไฟล์ที่โฮสต์โดย Salesforce.com และมีการใช้งานในเว็บเบราว์เซอร์เมื่อผู้ใช้เข้าถึงแอปพลิเคชันของคุณ S-Control อาจมีเนื้อหาประเภทใดก็ได้ที่คุณแสดงหรือเรียกใช้ในเว็บเบราว์เซอร์ได้ เช่น HTML, CSS หรือ JavaScript
ใน Salesforce.com และแมชอัปของ Google มีอยู่ไม่กี่อย่าง ดังนั้นสิ่งแรกที่ฉันทําคือเพิ่มปุ่ม "ส่งออกไปยัง Google" ลงในหน้ารายการรายชื่อติดต่อที่เรียกใช้ S-Control แบบง่ายแค่นี้ เพื่อตรวจสอบว่าช่างประปาทั้งหมดถูกต้องก่อนฉันจะเริ่มใช้ JavaScript
ในโปรเจ็กต์ Apex ให้คลิกขวาที่โฟลเดอร์ "S-Controls" แล้วเลือก Apex | S-Control ใหม่ ติดป้ายกํากับและส่งออก S-Control ให้กับ S-Control เป็น export_contacts ทิ้งประเภทเป็น HTML ที่กําหนดเอง แล้วคลิกเสร็จสิ้น
นอกจากนี้ S-Control ใหม่จะมีไฟล์ HTML ของโครงกระดูก คุณจะเพิ่ม JavaScript จํานวนมากใน <head> แต่เติม <body> ก่อนได้ เพื่อให้มีอะไรแสดงให้ผู้ใช้เห็นขณะส่งออกรายชื่อติดต่อ คัดลอก HTML นี้ในส่วนเนื้อหาของ S-Control เพื่อแสดง "จุดรอ" และโลโก้ของสเปรดชีต Google:
<div id="waiting" align="center" /> <img src="/img/icon/home32.png" height="64" width="64" /> <img src="/img/waiting_dots.gif" alt="Please wait..." title="Please wait..." height="25" width="196" /> <img src="http://docs.google.com/images/doclist/logo_docs.gif" /> <p><h3>Exporting contacts to Google Spreadsheets, please wait...</h3></p> </div>
ตอนนี้คุณเผยแพร่ S-Control และตั้งค่าปุ่มที่จะเรียกใช้ได้แล้ว
- ใช้ Eclipse เพื่อเผยแพร่ไฟล์ S-Control ดังนี้
- คลิกขวาที่โปรเจ็กต์ Apex แล้วเลือก Apex | ซิงค์ข้อมูลกับ Salesforce
- ค้นหา S-Control ใหม่ในโครงสร้างไดเรกทอรี คลิกขวาแล้วเลือกลบล้างรีโมตและเผยแพร่ไปยังเซิร์ฟเวอร์
- หากไม่พบ S-Control ของคุณ ชุดเครื่องมือ Apex อาจอัปโหลดให้คุณแล้ว แต่ความคิดของคุณควรใช้มุมมองการซิงค์เพื่อให้แน่ใจว่าโค้ดล่าสุดกําลังทํางานอยู่บนเซิร์ฟเวอร์ของคุณ
- ใช้ UI ของ Salesforce.com เพื่อกําหนดปุ่มที่จะเรียกใช้ S-Control นี้
- ในเมนู "การตั้งค่าแอป" ให้คลิกปรับแต่ง | รายชื่อติดต่อ | ปุ่มและลิงก์
- ในส่วน "ปุ่มและลิงก์ที่กําหนดเอง" ให้คลิกใหม่
- ป้อน Export to Google สําหรับป้ายกํากับ แล้วเก็บ Export_to_Google เป็นชื่อ
- เลือก "ปุ่มรายการ" เป็นประเภทการแสดงผล
- เลือก "S-Control ที่กําหนดเอง" เป็นแหล่งที่มาของเนื้อหา
- เลือก "แสดงในหน้าต่างที่มีอยู่พร้อมแถบด้านข้าง" เป็นลักษณะการทํางาน
- เลือก "export_contacts" จากเมนู S-Controls ที่กําหนดเอง
- เพิ่มปุ่มในข้อมูลรายชื่อติดต่อ
- ในเมนู "การตั้งค่าแอป" ให้คลิกปรับแต่ง | รายชื่อติดต่อ | เลย์เอาต์การค้นหา
- คลิกแก้ไขในแถว "มุมมองรายการรายชื่อติดต่อ"
- ไฮไลต์ "ส่งออกไปยัง Google" แล้วคลิกลูกศรขวา (>) เพื่อเพิ่มปุ่ม
- คลิกบันทึก
- ทดลองขับ
- คลิกแท็บรายชื่อติดต่อ
- เลือก "รายชื่อติดต่อทั้งหมด" เป็นมุมมอง แล้วคลิกไป!
- คลิกปุ่มส่งออกไปยัง Google ใหม่สุดหรู
- ดู "waiting_dots" แต่ไม่คาดหวังว่าจะมีอะไรเกิดขึ้นอีก
การโต้ตอบกับสเปรดชีตของ Google
หากคุณดูซอร์สโค้ดของ Google ปฏิทิน Mash-up คุณจะเห็นว่าไฟล์ gcal_snippet.scf มีนามธรรมสําหรับเซิร์ฟเวอร์ Google ปฏิทิน หากต้องการโต้ตอบกับ Google สเปรดชีต คุณจะต้องสร้างไฟล์ที่คล้ายกันสําหรับเซิร์ฟเวอร์สเปรดชีตของ Google ฉันใช้โค้ดของ Ron Hess ซ้ําสําหรับการใช้พร็อกซี AJAX ของ Salesforce.com และตรวจสอบสิทธิ์ด้วย Google AuthSub แล้วแทนที่ฟังก์ชันที่จะเขียนกิจกรรมไปยัง Google ปฏิทินด้วยการเขียนการเขียนข้อมูลใน Google สเปรดชีต แหล่งที่มาที่สมบูรณ์ของไฟล์นี้มีอยู่ที่ gspreadsheet_snippet.scf
ต่อไป ฉันได้เพิ่ม JavaScript ไปยัง S-Control ของ export_contacts.scf เพื่อค้นหาข้อมูลติดต่อของ Salesforce.com และเขียนลงในสเปรดชีตของ Google การใช้ข้อมูลจาก Salesforce.com นั้นทําได้ง่าย เพียงสร้างการค้นหาและระบุฟังก์ชันเรียกกลับเพื่อดําเนินการเมื่อมีการส่งคืนข้อมูล เช่น
var query = 'Select FirstName, LastName, Phone From Contact'; var queryResult = sforce.connection.query(query, queryCallback);
เมื่อคุณมีข้อมูลติดต่อจาก Salesforce.com แล้ว คุณจะต้องเลือกว่าจะส่งออกข้อมูลดังกล่าวไปที่ใด ในโปรโตคอลข้อมูล RESTful ของ Google สเปรดชีตแต่ละรายการจะระบุได้ด้วย URL ที่ไม่ซ้ํากัน คุณสามารถดูรายการสเปรดชีตของผู้ใช้ (และ URL ที่เชื่อมโยง) ได้โดยค้นหา URL ของเมตาฟีด: http://spreadsheets.google.com/feeds/spreadsheets/private/full
วิธีต่อไปนี้ทําซ้ําผ่านสเปรดชีตเหล่านี้ โดยมองหาสเปรดชีตที่มีชื่อเฉพาะ เมื่อพบสเปรดชีตที่ถูกต้อง ระบบจะดาวน์โหลดรายการเวิร์กชีตก่อน จากนั้นจะแสดงผล URL ของฟีดเซลล์สําหรับเวิร์กชีตแรก
function getCellFeedUrl() { var SPREADSHEET_TITLE = 'Salesforce.com Contacts'; var WORKSHEET_REL = 'http://schemas.google.com/spreadsheets/2006#worksheetsfeed'; var CELLSFEED_REL = 'http://schemas.google.com/spreadsheets/2006#cellsfeed'; // Query to find the spreadheet called "Salesforce.com Contacts" var spreadsheets = g.getFeed('http://spreadsheets.google.com/feeds/spreadsheets/private/full'); var entries = g.getEntryList(spreadsheets); for (var e in entries) { if (g.getTitle(entries[e]) == SPREADSHEET_TITLE) { var worksheetsFeedUrl = g.link(entries[e],WORKSHEET_REL); var worksheets = g.getFeed(worksheetsFeedUrl); var worksheetEntries = g.getEntryList(worksheets); return g.link(worksheetEntries[0], CELLSFEED_REL); } } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีดที่มีอยู่ใน API ข้อมูลของ Google สเปรดชีตได้ในคู่มืออ้างอิง
ฟังก์ชัน queryCallback
จะใช้เมธอด getCellFeedUrl
เพื่อค้นหา URL ของฟีดเซลล์ที่จําเป็นในการส่งคําขออัปเดตเซลล์ จากนั้นเขียนข้อมูลติดต่อทีละรายการในเซลล์
function queryCallback(queryResult) { var cellFeedUrl = getCellFeedUrl(); var contacts = queryResult.getArray('records'); for (var i=0; i<contacts.length; i++) { g.updateCell(cellFeedUrl, i+1, 1, contacts[i].LastName + ", " + contacts[i].FirstName); g.updateCell(cellFeedUrl, i+1, 2, contacts[i].Phone); } jumpback(); // Return to the contacts page when your done }
เมธอด updateCell
อยู่ใน S-Control ของ gspreadsheet_snippet.scf เมธอดจะได้รับ URL แก้ไขของเซลล์ในแถวและคอลัมน์ที่ระบุ จากนั้นส่งข้อความ HTTP PUT
ที่มีการนําเสนอข้อมูลใน Google ที่ได้จากเซลล์ที่อัปเดต:
GoogleSpreadsheet.prototype.updateCell = function(cellsFeedUrl, row, column, content ) { var cellEntry = this.getFeed(cellsFeedUrl+'/R'+row+'C'+column); var cellEditUrl = this.link(cellEntry,'edit'); var newCellEntry = "<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'>" + "<atom:category scheme='http://schemas.google.com/spreadsheets/2006' " + "term='http://schemas.google.com/spreadsheets/2006#cell' />" + "<gs:cell xmlns:gs='http://schemas.google.com/spreadsheets/2006' " + "row='" + row + "' col='" + column + "' inputValue='" + content + "' />" + "</atom:entry>"; this.putEntry(cellEditUrl, newCellEntry); }
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีอัปเดตเซลล์ด้วย API ข้อมูลของ Google สเปรดชีตได้ในคู่มือสําหรับนักพัฒนาซอฟต์แวร์
API ข้อมูลสเปรดชีตของ Google ใช้โดเมนย่อย https://spreadsheets.google.com
ดังนั้นก่อนโค้ดข้างต้นจะใช้งานได้ คุณจะต้องกําหนดค่าพร็อกซีเซิร์ฟเวอร์ Salesforce.com และเพิ่ม https://spreadsheets.google.com
และจะต้องไปที่ Google เอกสารและสร้างสเปรดชีตใหม่เพื่อเก็บข้อมูล อย่าลืมบันทึกเป็นรายชื่อติดต่อของ Salesforce.
เมื่ออัปโหลดการควบคุม S แล้ว คุณจะส่งออกข้อมูลติดต่อไปยังสเปรดชีต Google ได้ แล้วยังไงล่ะ เมื่อมีความรู้ใหม่ๆ เกี่ยวกับ Salesforce.com และ Google Data API คุณก็สามารถเขียนโค้ดเพื่อนําเข้าข้อมูลติดต่อจาก Google สเปรดชีตไปยัง Salesforce.com ได้ด้วย
บทสรุป
บทความนี้แทบจะไม่เคยมีมาก่อน แต่ตอนนี้เมื่อมีแพลตฟอร์ม Salesforce.com และ Google Data API แล้ว ให้ลองนึกถึงแอปพลิเคชันทั้งหมดที่คุณเขียนได้เพื่อใช้ประโยชน์จากระบบที่มีประสิทธิภาพเหล่านี้ Google APIs กลุ่ม API เติบโตขึ้นเรื่อยๆ เพื่อให้คุณเห็นข้อมูลเพิ่มเติมในการใช้ประโยชน์จากแอปพลิเคชัน และแพลตฟอร์ม Salesforce.com มีเครื่องมือที่มีประโยชน์มากมายที่ไม่ได้กล่าวถึงในบทความนี้ ฉันอยากได้แมชอัปถัดไปที่คัดสรรมาแล้วใน The AppExchange
ขอให้สนุกกับการเขียนโค้ด