REST สําหรับพนักงานขายท่องเที่ยว: การใช้ข้อมูล Google ใน Salesforce.com

Lane LiaBraaten โปรแกรมนักพัฒนาซอฟต์แวร์ของ Google
พฤศจิกายน 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

  1. ติดตั้งแอปพลิเคชัน
    • ไปที่หน้า Google ปฏิทิน Mash-up แล้วคลิกดาวน์โหลดเลย
    • ป้อนข้อมูลเข้าสู่ระบบ ADN แล้วคลิกต่อไป
    • อ่านข้อกําหนดและเงื่อนไข แล้วคลิกต่อไป
    • คลิกถัดไปผ่านหน้า "ตรวจสอบเนื้อหาแพ็กเกจ"
    • เลือกระดับความปลอดภัยแล้วคลิกถัดไป
    • คลิกติดตั้ง
  2. กําหนดค่าพร็อกซี AJAX ของ Salesforce.com
    • ในเมนู "การตั้งค่าการดูแลระบบ" ให้คลิกการควบคุมความปลอดภัย | การตั้งค่าเว็บไซต์ระยะไกล
    • คลิกเว็บไซต์ระยะไกลใหม่
    • ป้อน Google เป็น "ชื่อเว็บไซต์ระยะไกล" และสําหรับ "URL ของเว็บไซต์ระยะไกล" ให้ใช้ https://www.google.com
    • คลิกบันทึก
  3. เพิ่มปุ่ม "เพิ่มลงใน Google" ในหน้ารายละเอียดกิจกรรม
    • ในเมนู "การตั้งค่าแอป" ให้คลิกปรับแต่ง | กิจกรรม | เลย์เอาต์หน้าของกิจกรรม
    • คลิกแก้ไขในแถว "การออกแบบกิจกรรม"
    • ดับเบิลคลิกพื้นที่ "ปุ่มหน้ารายละเอียด"
    • ไฮไลต์ "เพิ่มลงใน Google" แล้วคลิกลูกศรขวา (>) เพื่อเพิ่มปุ่ม
    • คลิกตกลง
    • คลิกบันทึกในหน้า "พร็อพเพอร์ตี้เลย์เอาต์หน้าเว็บ"
  4. ส่งออกเหตุการณ์
    • คลิกหน้าแรกที่ด้านบนซ้ายเพื่อดูปฏิทิน
    • หากไม่มีเหตุการณ์ ให้คลิกเหตุการณ์ใหม่เพื่อสร้างเหตุการณ์
    • คลิกเหตุการณ์เพื่อดูหน้ารายละเอียดกิจกรรม
    • คลิกปุ่มเพิ่มลงใน 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 และตั้งค่าปุ่มที่จะเรียกใช้ได้แล้ว

  1. ใช้ Eclipse เพื่อเผยแพร่ไฟล์ S-Control ดังนี้
    • คลิกขวาที่โปรเจ็กต์ Apex แล้วเลือก Apex | ซิงค์ข้อมูลกับ Salesforce
    • ค้นหา S-Control ใหม่ในโครงสร้างไดเรกทอรี คลิกขวาแล้วเลือกลบล้างรีโมตและเผยแพร่ไปยังเซิร์ฟเวอร์
    • หากไม่พบ S-Control ของคุณ ชุดเครื่องมือ Apex อาจอัปโหลดให้คุณแล้ว แต่ความคิดของคุณควรใช้มุมมองการซิงค์เพื่อให้แน่ใจว่าโค้ดล่าสุดกําลังทํางานอยู่บนเซิร์ฟเวอร์ของคุณ
  2. ใช้ UI ของ Salesforce.com เพื่อกําหนดปุ่มที่จะเรียกใช้ S-Control นี้
    • ในเมนู "การตั้งค่าแอป" ให้คลิกปรับแต่ง | รายชื่อติดต่อ | ปุ่มและลิงก์
    • ในส่วน "ปุ่มและลิงก์ที่กําหนดเอง" ให้คลิกใหม่
    • ป้อน Export to Google สําหรับป้ายกํากับ แล้วเก็บ Export_to_Google เป็นชื่อ
    • เลือก "ปุ่มรายการ" เป็นประเภทการแสดงผล
    • เลือก "S-Control ที่กําหนดเอง" เป็นแหล่งที่มาของเนื้อหา
    • เลือก "แสดงในหน้าต่างที่มีอยู่พร้อมแถบด้านข้าง" เป็นลักษณะการทํางาน
    • เลือก "export_contacts" จากเมนู S-Controls ที่กําหนดเอง
  3. เพิ่มปุ่มในข้อมูลรายชื่อติดต่อ
    • ในเมนู "การตั้งค่าแอป" ให้คลิกปรับแต่ง | รายชื่อติดต่อ | เลย์เอาต์การค้นหา
    • คลิกแก้ไขในแถว "มุมมองรายการรายชื่อติดต่อ"
    • ไฮไลต์ "ส่งออกไปยัง Google" แล้วคลิกลูกศรขวา (>) เพื่อเพิ่มปุ่ม
    • คลิกบันทึก
  4. ทดลองขับ
    • คลิกแท็บรายชื่อติดต่อ
    • เลือก "รายชื่อติดต่อทั้งหมด" เป็นมุมมอง แล้วคลิกไป!
    • คลิกปุ่มส่งออกไปยัง 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

ขอให้สนุกกับการเขียนโค้ด

ทรัพยากร