พฤศจิกายน 2007
บทนำ
Salesforce.com และ Google เป็นผู้ให้บริการแอปพลิเคชัน "ซอฟต์แวร์ในรูปแบบบริการ" ยอดนิยม และทั้ง 2 องค์กรมี API ที่ช่วยให้นักพัฒนาแอปเข้าถึงแหล่งข้อมูลขนาดใหญ่ที่ขับเคลื่อนแอปพลิเคชันเหล่านี้ได้ และเมื่อเรานำ API ทั้ง 2 ชุดมารวมกัน ก็จะเกิดสิ่งน่าสนใจขึ้น มีการใช้ G Suite ในการตั้งค่าองค์กรและ Salesforce.com มากขึ้นเรื่อยๆ และ Salesforce.com ได้สร้างแพลตฟอร์มที่ครอบคลุมสำหรับการสร้างแอปพลิเคชันทางธุรกิจที่กำหนดเอง จึงมีโอกาสมากมายสำหรับนักพัฒนาซอฟต์แวร์ (นั่นคือคุณ!) ในการรวมพลังของ Google และ Salesforce.com
บทความนี้จะแสดงวิธีใช้ Google Data API ที่เป็น RESTful เพื่อเริ่มสร้างแมชอัประดับองค์กร แม้ว่าคุณจะเพิ่งเริ่มต้นใช้งานแพลตฟอร์ม Salesforce.com หรือโปรโตคอล Google Data ก็ตาม ฉันจะช่วยคุณตั้งค่าสภาพแวดล้อมการพัฒนา ติดตั้ง Salesforce.com และ Google Mashup ที่มีอยู่ แล้วเขียนของคุณเอง
สวัสดี Salesforce.com
หากคุณเป็นมือใหม่ของ Salesforce.com เหมือนกับฉัน คุณจะต้องเริ่มต้นด้วยการลงชื่อสมัครใช้บัญชีนักพัฒนาแอปใน ADN ซึ่งเป็น Apex Developer Network บัญชีนักพัฒนาซอฟต์แวร์จะให้บัญชี Salesforce.com ที่มีฟีเจอร์ครบถ้วนแก่คุณ รวมถึงสิทธิ์เข้าถึงวิกิ Apex และกระดานสนทนา
จากนั้นคุณจะต้องดาวน์โหลด Apex Toolkit สำหรับ Eclipse ชุดเครื่องมือนี้ต้องใช้ Java 1.5 และ Eclipse 3.2.2 ขึ้นไป หากคุณคุ้นเคยกับ Eclipse อยู่แล้ว เว็บไซต์อัปเดตซอฟต์แวร์สำหรับชุดเครื่องมือคือ http://www.adnsandbox.com/eclipsetoolkit/10.0/
หากคุณไม่คุ้นเคยกับปลั๊กอิน Eclipse หรือเกิดข้อผิดพลาดระหว่างการติดตั้ง วิกิ Apex จะมีวิธีการติดตั้งโดยละเอียด
เมื่อติดตั้งชุดเครื่องมือแล้ว คุณจะเข้าถึงเนื้อหาความช่วยเหลือของ Apex ที่ผสานรวมเข้ากับระบบความช่วยเหลือของ Eclipse ได้ ใน Eclipse ให้ไปที่ Help | Help Contents | Apex Toolkit for Eclipse เพื่อดูเนื้อหานี้ แหล่งข้อมูลความช่วยเหลืออย่างหนึ่งคือบทแนะนำการเริ่มต้นใช้งานฉบับย่อที่จะแสดงวิธีสร้างโปรเจ็กต์ใหม่และเพิ่ม S-Control, คลาส และทริกเกอร์ หากยังไม่เคยใช้โค้ด Apex มาก่อน คุณควรทำตามบทแนะนำนี้และสร้างโปรเจ็กต์ Apex ก่อนดำเนินการต่อ
การส่งออกกิจกรรมไปยัง Google ปฏิทิน
Ron Hess ได้เขียนแอปพลิเคชัน Google Calendar Mash-up ที่ช่วยให้คุณส่งออกกิจกรรมจาก Salesforce.com ไปยัง Google ปฏิทินได้ นอกจากนี้ รอนยังเขียนบทความที่อธิบายวิธีการทำงานของผลงานรีมิกซ์ของเขาด้วย แอปพลิเคชัน Google สเปรดชีตที่ฉันจะแสดงวิธีสร้างในภายหลังนั้นจำลองมาจาก Google ปฏิทินแบบผสมของรอน ขอบคุณ Ron
หากคุณเป็นผู้ใช้ Salesforce.com ขั้นสูง คุณอาจผสานรวมและใช้แอปพลิเคชัน Google ปฏิทินของ Ron ได้โดยไม่ต้องมีคำแนะนำ ตอนแรกฉันต้องการความช่วยเหลือเล็กน้อย ดังนั้นฉันจึงทำตามขั้นตอนต่อไปนี้เพื่อดูแอปของรอนทำงาน
- ติดตั้งแอปพลิเคชันโดยทำดังนี้
- ไปที่หน้า Google Calendar Mash-up แล้วคลิกดาวน์โหลดเลย
- ป้อนข้อมูลเข้าสู่ระบบ ADN แล้วคลิกต่อไป
- อ่านข้อกำหนดและเงื่อนไข แล้วคลิกต่อไป
- คลิกถัดไปผ่านหน้า "ตรวจสอบเนื้อหาของแพ็กเกจ"
- เลือกระดับความปลอดภัย แล้วคลิกถัดไป
- คลิกติดตั้ง
- กำหนดค่าพร็อกซี AJAX ของ Salesforce.com
- ในเมนู "การตั้งค่าการดูแลระบบ" ให้คลิกการควบคุมความปลอดภัย | การตั้งค่าเว็บไซต์ระยะไกล
- คลิกเว็บไซต์ระยะไกลใหม่
- ป้อน Google เป็น "ชื่อเว็บไซต์ระยะไกล" และใช้ https://www.google.com สำหรับ "URL ของเว็บไซต์ระยะไกล"
- คลิกบันทึก
- เพิ่มปุ่ม "เพิ่มลงใน Google" ไปยังหน้ารายละเอียดกิจกรรมโดยทำดังนี้
- ในเมนู "การตั้งค่าแอป" ให้คลิกปรับแต่ง | กิจกรรม | เลย์เอาต์หน้ากิจกรรม
- คลิกแก้ไขในแถว "เลย์เอาต์กิจกรรม"
- ดับเบิลคลิกพื้นที่ "ปุ่มหน้ารายละเอียด"
- ไฮไลต์ "เพิ่มไปยัง Google" แล้วคลิกลูกศรขวา (>) เพื่อเพิ่มปุ่ม
- คลิกตกลง
- คลิกบันทึกในหน้า "คุณสมบัติเลย์เอาต์หน้าเว็บ"
- ส่งออกกิจกรรม
- คลิกหน้าแรกที่ด้านซ้ายบนเพื่อดูปฏิทิน
- หากยังไม่มีกิจกรรม ให้คลิกกิจกรรมใหม่เพื่อสร้าง
- คลิกกิจกรรมเพื่อดูหน้ารายละเอียดกิจกรรม
- คลิกปุ่มเพิ่มลงใน Google
- คลิกตกลงในการแจ้งเตือน JavaScript
- ลงชื่อเข้าใช้ด้วยชื่อผู้ใช้และรหัสผ่าน Google ของคุณ
- คลิกให้สิทธิ์เข้าถึงเพื่อให้แอปพลิเคชัน SalesForce มีสิทธิ์เขียนใน Google ปฏิทิน
- ดูกิจกรรมใน Google ปฏิทิน
การสร้างแอปพลิเคชันสเปรดชีตของ Google
คุณอาจเบื่อกับการคลิกไปมาในหน้าต่างๆ ของ Salesforce.com และพร้อมที่จะเขียนโค้ดแล้ว เปิด Eclipse อีกครั้ง แล้วคุณจะเห็นว่าโปรเจ็กต์ Apex ที่สร้างขึ้นมี S-Controls สำหรับแอป Google ปฏิทินของ Ron แล้ว ทั้งนี้เนื่องจาก Apex Toolkit สำหรับ Eclipse จะซิงค์กับ Salesforce.com อยู่เสมอ ซึ่งเป็นเรื่องที่น่าสนใจใช่ไหม
คุณสามารถสร้างแอปข้อมูล Google ของคุณเองได้โดยใช้ฟังก์ชันการทำงานบางอย่างของ Google Calendar Mash-up ซ้ำ เช่น การควบคุมการตรวจสอบสิทธิ์ ในส่วนที่เหลือของส่วนนี้ ฉันจะแสดงวิธีสร้างแอปที่ส่งออกรายชื่อติดต่อ 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 | New S-Control ตั้งป้ายกำกับและชื่อของ S-Control ใหม่เป็น export_contacts ปล่อยให้ประเภทเป็น Custom 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 | Synchronize with Salesforce
- ค้นหา S-Control ใหม่ในโครงสร้างไดเรกทอรี คลิกขวา แล้วเลือกลบล้างรีโมตและเผยแพร่ไปยังเซิร์ฟเวอร์
- หากไม่พบ S-Control ชุดเครื่องมือ Apex อาจอัปโหลดให้คุณแล้ว แต่คุณควรใช้มุมมองการซิงโครไนซ์เพื่อให้แน่ใจว่าโค้ดล่าสุดทำงานบนเซิร์ฟเวอร์
- ใช้ UI ของ Salesforce.com เพื่อกำหนดปุ่มที่จะเรียกใช้ S-Control นี้
- ในเมนู "การตั้งค่าแอป" ให้คลิกปรับแต่ง | รายชื่อติดต่อ | ปุ่มและลิงก์
- ในส่วน "ปุ่มและลิงก์ที่กำหนดเอง" ให้คลิกใหม่
- ป้อนส่งออกไปยัง Google สำหรับป้ายกำกับ และเก็บ Export_to_Google ไว้เป็นชื่อ
- เลือก "ปุ่มรายการ" เป็นประเภทการแสดงผล
- เลือก "S-Control ที่กำหนดเอง" เป็นแหล่งที่มาของเนื้อหา
- เลือก "แสดงในหน้าต่างที่มีอยู่พร้อมแถบด้านข้าง" เป็นลักษณะการทำงาน
- เลือก "export_contacts" จากเมนู S-Control ที่กำหนดเอง
- เพิ่มปุ่มไปยังรายการรายชื่อติดต่อโดยทำดังนี้
- ในเมนู "การตั้งค่าแอป" ให้คลิกปรับแต่ง | รายชื่อติดต่อ | เลย์เอาต์การค้นหา
- คลิกแก้ไขในแถว "มุมมองรายชื่อติดต่อ"
- ไฮไลต์ "ส่งออกไปยัง 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 เป็นเรื่องง่าย เพียงสร้างคําค้นหาและระบุฟังก์ชัน Callback เพื่อเรียกใช้เมื่อระบบแสดงผลข้อมูล เช่น
var query = 'Select FirstName, LastName, Phone From Contact'; var queryResult = sforce.connection.query(query, queryCallback);
เมื่อได้ข้อมูลติดต่อจาก Salesforce.com แล้ว คุณจะต้องหาวิธีส่งออกข้อมูล ในโปรโตคอล Google Data แบบ RESTful คุณจะระบุสเปรดชีตแต่ละรายการได้ด้วย URL ที่ไม่ซ้ำกัน คุณดูรายการสเปรดชีตของผู้ใช้ (และ URL ที่เชื่อมโยง) ได้โดยค้นหา URL ของ Metafeed: 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); } } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีดที่มีอยู่ใน Google Spreadsheets Data API ได้ในคู่มืออ้างอิง
ฟังก์ชัน 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); }
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีอัปเดตเซลล์ด้วย Google Spreadsheets Data API ได้ในคู่มือสำหรับนักพัฒนาซอฟต์แวร์
API ข้อมูลของ Google Spreadsheets ใช้โดเมนย่อย https://spreadsheets.google.com
ดังนั้นก่อนที่โค้ดข้างต้นจะทำงานได้ คุณจะต้องกำหนดค่าพร็อกซีเซิร์ฟเวอร์ AJAX ของ Salesforce.com และเพิ่ม https://spreadsheets.google.com
นอกจากนี้ คุณยังต้องไปที่ Google เอกสารและสร้างสเปรดชีตใหม่เพื่อเก็บข้อมูลด้วย อย่าลืมบันทึกเป็น Salesforce.com Contacts
เมื่ออัปโหลด S-Control เหล่านี้แล้ว คุณจะส่งออกข้อมูลติดต่อไปยังสเปรดชีตใน Google ได้ แล้วถ้าจะทำในทางกลับกันล่ะ ด้วยความรู้ใหม่เกี่ยวกับ Salesforce.com และ Google Data APIs คุณยังเขียนโค้ดเพื่อนำเข้าข้อมูลติดต่อจาก Google สเปรดชีตไปยัง Salesforce.com ได้ด้วย
บทสรุป
บทความนี้เป็นเพียงการเริ่มต้นเท่านั้น แต่ตอนนี้คุณก็พร้อมที่จะใช้แพลตฟอร์ม Salesforce.com และ Google Data APIs แล้ว ลองคิดถึงแอปพลิเคชันทั้งหมดที่คุณเขียนขึ้นเพื่อใช้ประโยชน์จากระบบที่มีประสิทธิภาพเหล่านี้ ตระกูล API ของ Google Data มีการขยายตัวอยู่เสมอ โดยจะแสดงข้อมูลเพิ่มเติมเพื่อให้คุณใช้ประโยชน์ในแอปพลิเคชันได้ และแพลตฟอร์ม Salesforce.com มีเครื่องมือที่มีประโยชน์มากมายที่ไม่ได้กล่าวถึงในบทความนี้ ฉันจะรอติดตามการผสมผสานแอปสำหรับองค์กรครั้งต่อไปของคุณใน AppExchange
ขอให้สนุกกับการเขียนโค้ด