यात्रा करने वाले सेल्समैन के लिए REST: Salesforce.com पर Google डेटा का इस्तेमाल करना

लेन लियाब्रटन, Google Developer Program
नवंबर 2007

सुविधा के बारे में जानकारी

Salesforce.com और Google, "सेवा के रूप में सॉफ़्टवेयर" ऐप्लिकेशन लोकप्रिय होस्ट करते हैं और दोनों संगठन API उपलब्ध कराते हैं जो डेवलपर को डेटा के बड़े संग्रह को ऐक्सेस करने देते हैं जो इन ऐप्लिकेशन को सशक्त बनाते हैं और जब हम API के दोनों सेट को मर्ज करते हैं, तो चीज़ें दिलचस्प होने लगती हैं. G Suite का उपयोग एंटरप्राइज़ सेटिंग में ज़्यादा से ज़्यादा किया जा रहा है और Salesforce.com ने कस्टम व्यवसाय ऐप्लिकेशन बनाने के लिए एक विस्तृत प्लेटफ़ॉर्म बनाया है, इसलिए डेवलपर और आपके पास Google.

इस लेख में एंटरप्राइज़ मैशअप बनाने के लिए, RESTful Google डेटा एपीआई इस्तेमाल करने का तरीका बताया गया है. भले ही, आपने Salesforce.com प्लैटफ़ॉर्म या Google डेटा प्रोटोकॉल अभी शुरू किया हो. मैं आपके डेवलपमेंट एनवायरमेंट को सेट अप करने में आपकी मदद करूँगी, मौजूदा Salesforce.com और Google मैशअप इंस्टॉल करूँगी.

नमस्ते, Salesforce.com!

अगर आप Salesforce.com के नए उपयोगकर्ता हैं, तो मैं ADN, Apex Developer Network पर डेवलपर खाते के लिए साइन अप करके शुरुआत कर सकता/सकती हूं. डेवलपर खाता, सभी सुविधाओं वाला Salesforce.com खाता उपलब्ध कराता है. साथ ही, Apex wiki और चर्चा बोर्ड का ऐक्सेस भी मिलता है.

इसके बाद, आपको Epips के लिए Apex टूलकिट चाहिए. टूलकिट के लिए Java 1.5 और Eclipse 3.2.2 की ज़रूरत होती है. अगर आपको Eclipse के बारे में जानकारी है, तो टूलकिट के लिए सॉफ़्टवेयर अपडेट साइट http://www.adnsandbox.com/eclipsetoolkit/10.0/ है. अगर आपको Eclipse प्लग इन की जानकारी नहीं है या आपके इंस्टॉलेशन के दौरान कुछ गलत हो जाता है, तो Apex wiki में इंस्टॉल करने के बारे में ज़्यादा जानकारी दी जाती है.

टूलकिट इंस्टॉल हो जाने के बाद, आप Apex सहायता सामग्री ऐक्सेस कर सकते हैं जिसे Eclipse के सहायता सिस्टम में शामिल किया गया है. Eclipse में, इस सामग्री को देखने के लिए सहायता | सहायता सामग्री | Epipse के लिए Apex टूलकिट पर जाएं. सहायता संसाधनों में से एक एक क्विकस्टार्ट ट्यूटोरियल है, जो आपको नया प्रोजेक्ट बनाने और एस-कंट्रोल, क्लास, और ट्रिगर जोड़ने का तरीका दिखाएगा. अगर आपने पहले Apex कोड के साथ काम नहीं किया है, तो आगे बढ़ने से पहले आपको यह ट्यूटोरियल देखना होगा. साथ ही, आपको Apex प्रोजेक्ट बनाना होगा.

इवेंट को Google Calendar में एक्सपोर्ट किया जा रहा है

रॉन हेस ने एक Google कैलेंडर मैश-अप ऐप्लिकेशन लिखा, जिससे आप Salesforce.com से Google कैलेंडर में इवेंट निर्यात कर सकते हैं. रॉन ने एक लेख भी लिखा, जिसमें उनके मैशअप के काम करने का तरीका बताया गया है. Google स्प्रेडशीट ऐप्लिकेशन जो मैं आपको बाद में बनाने का तरीका दिखा रहा हूं, उसे रॉन के Google कैलेंडर मैश-अप के बाद मॉडल किया गया है. धन्यवाद रॉन!

अगर आप Salesforce.com के जानकार उपयोगकर्ता हैं, तो आप रॉन के Google Calendar ऐप्लिकेशन को बिना किसी निर्देश के इंटिग्रेट कर सकते हैं और उसका इस्तेमाल कर सकते हैं. मुझे शुरुआत में थोड़ी मदद चाहिए थी, इसलिए मैंने देखा कि रोहन का ऐप्लिकेशन काम करता है.

  1. ऐप्लिकेशन इंस्टॉल करें:
    • Google Calendar मैश-अप पेज पर जाएं और अभी पाएं पर क्लिक करें.
    • अपने एडीएन क्रेडेंशियल डालें और जारी रखें पर क्लिक करें.
    • नियम और शर्तें पढ़ें और जारी रखें पर क्लिक करें.
    • "पैकेज कॉन्टेंट की जांच करें" पेज पर जाकर, आगे बढ़ें पर क्लिक करें.
    • कोई सुरक्षा लेवल चुनें और आगे बढ़ें पर क्लिक करें.
    • इंस्टॉल करें क्लिक करें
  2. Salesforce.com AJAX प्रॉक्सी को कॉन्फ़िगर करना
    • "एडमिन सेटअप" मेन्यू में, सुरक्षा कंट्रोल | रिमोट साइट की सेटिंग पर क्लिक करें.
    • नई रिमोट साइट पर क्लिक करें.
    • Google को "रिमोट साइट नाम" के रूप में डालें और "रिमोट साइट यूआरएल" के लिए https://www.google.com का इस्तेमाल करें.
    • सेव करें पर क्लिक करें.
  3. इवेंट की जानकारी वाले पेज पर "Google में जोड़ें" बटन जोड़ें:
    • "ऐप्लिकेशन सेट अप" मेन्यू में, पसंद के मुताबिक | गतिविधियां | इवेंट पेज के लेआउट पर क्लिक करें.
    • "इवेंट लेआउट" लाइन में, बदलाव करें पर क्लिक करें.
    • "जानकारी वाले पेज के बटन" वाले सेक्शन पर दो बार क्लिक करें.
    • "Google में जोड़ें" को हाइलाइट करें और बटन जोड़ने के लिए दाएं (>) तीर पर क्लिक करें.
    • ठीक है पर क्लिक करें.
    • "पेज लेआउट प्रॉपर्टी" पेज पर, सेव करें पर क्लिक करें.
  4. कोई इवेंट एक्सपोर्ट करें
    • अपना कैलेंडर देखने के लिए, ऊपर बाईं ओर मौजूद होम पेज पर क्लिक करें.
    • अगर आपका कोई इवेंट नहीं है, तो इवेंट बनाने के लिए नया इवेंट पर क्लिक करें.
    • इवेंट की जानकारी वाला पेज देखने के लिए, किसी इवेंट पर क्लिक करें.
    • Google पर जोड़ें बटन पर क्लिक करें.
    • JavaScript अलर्ट के ज़रिए ठीक है पर क्लिक करें
    • अपने Google उपयोगकर्ता नाम और पासवर्ड के साथ साइन इन करें.
    • SalesForce ऐप्लिकेशन को अपने Google कैलेंडर का ऐक्सेस देने के लिए, ऐक्सेस दें पर क्लिक करें.
    • इवेंट को अपने Google कैलेंडर में देखें

Google स्प्रेडशीट ऐप्लिकेशन बनाना

ठीक है, शायद आप Salesforce.com पेजों पर क्लिक करके थक गए हैं और कुछ कोड लिखने के लिए तैयार हैं. फिर से Eclipse सक्रिय करें और आप देखेंगे कि अब आपके बनाए गए Apex प्रोजेक्ट में Ron के Google Calendar ऐप्लिकेशन के लिए S-Control हैं. ऐसा इसलिए है क्योंकि Apex के लिए Apex टूलकिट लगातार Salesforce.com के साथ सिंक्रोनाइज़ कर रहा है, शानदार?

आप Google कैलेंडर मैश-अप की कुछ सुविधाओं, जैसे प्रमाणीकरण नियंत्रण, का इस्तेमाल करके अपना Google डेटा ऐप्लिकेशन बना सकते हैं. इस शेष भाग में, मैं आपको Salesforce बनाने का ऐप्लिकेशन बनाने का तरीका बताऊंगी, जो आपके Salesforce.com संपर्कों को Google स्प्रेडशीट में निर्यात करेगा.

आसान S-Control प्रकाशित करना

S-Control एक ऐसी फ़ाइल है जिसे Salesforce.com होस्ट करता है और जब उपयोगकर्ता आपके ऐप्लिकेशन को ऐक्सेस करते हैं, तो यह वेब ब्राउज़र में काम करती है. एस-कंट्रोल में ऐसी कोई भी सामग्री हो सकती है जिसे आप वेब ब्राउज़र में दिखा या चला सकते हैं, जैसे HTML, CSS या JavaScript.

Salesforce.com और Google मैशअप में कुछ हलचल करने वाले भाग हैं, इसलिए मैंने जो पहला काम किया वह संपर्क सूची पेज में एक "Google पर एक्सपोर्ट करें" बटन जोड़ना था, जो सिर्फ़ S-Control को शुरू करता है, ताकि यह पक्का हो सके कि JavaScript में गहराई से पहुंचने से पहले सभी प्लंबिंग सही थे.

अपने Apex प्रोजेक्ट में, "S-Controls" फ़ोल्डर पर दायां क्लिक करें और Apex | नया S-Control चुनें. नए S-Control को, एक ऐसा लेबल और export_contacts का नाम दें. टाइप को कस्टम एचटीएमएल के तौर पर रखें और पूरा करें पर क्लिक करें.

नए एस-कंट्रोल में स्केलेट एचटीएमएल फ़ाइल होगी. आप <head> में JavaScript का एक समूह जोड़ेंगे, लेकिन आप पहले <body> को भर सकते हैं, इसलिए संपर्कों को निर्यात करते समय उपयोगकर्ता को दिखाने के लिए कुछ न कुछ है. "एचटीएमएल का इंतज़ार" और Google स्प्रेडशीट का लोगो दिखाने के लिए, इस एचटीएमएल को अपने S-Control के मुख्य हिस्से में कॉपी करें:

<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. S-Control फ़ाइल को प्रकाशित करने के लिए, Eclipse का इस्तेमाल करें:
    • अपने Apex प्रोजेक्ट पर दायां क्लिक करें और Apex | Salesforce के साथ सिंक करें को चुनें.
    • डायरेक्ट्री ट्री में अपना नया S-Control ढूंढें, उस पर दायां क्लिक करें और रिमोट को बदलें और सर्वर पर पब्लिश करें चुनें.
    • अगर आपको अपना S-Control नहीं मिल रहा है, तो हो सकता है कि Apex टूलकिट ने इसे आपके लिए पहले ही अपलोड कर दिया हो, लेकिन सिंक करने का नज़रिया इस्तेमाल करना एक अच्छा आइडिया है, ताकि यह पक्का किया जा सके कि सर्वर पर नया कोड चल रहा है.
  2. इस S-Control को शुरू करने वाला बटन तय करने के लिए, Salesforce.com यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करें:
    • "ऐप्लिकेशन सेटअप" मेन्यू में, पसंद के मुताबिक | संपर्क | बटन और लिंक पर क्लिक करें.
    • "पसंद के मुताबिक बटन और लिंक" सेक्शन में, नया पर क्लिक करें.
    • लेबल के लिए Google को एक्सपोर्ट करें डालें और नाम को Export_to_Google रखें.
    • डिसप्ले टाइप के तौर पर "सूची बटन" चुनें.
    • कॉन्टेंट सोर्स के तौर पर, "कस्टम एस-कंट्रोल" चुनें.
    • व्यवहार के रूप में, "साइडबार के साथ मौजूदा विंडो में दिखाएं" चुनें.
    • कस्टम एस-कंट्रोल मेन्यू से "export_contacts" चुनें.
  3. इस बटन को संपर्कों की सूची में जोड़ें:
    • "ऐप्लिकेशन सेटअप" मेन्यू में, पसंद के मुताबिक | संपर्क | सर्च लेआउट पर क्लिक करें.
    • "संपर्क सूची दृश्य" पंक्ति में बदलाव करें पर क्लिक करें.
    • "Google पर एक्सपोर्ट करें" को हाइलाइट करें और बटन जोड़ने के लिए, राइट (>) ऐरो पर क्लिक करें.
    • सेव करें पर क्लिक करें.
  4. इसे टेस्ट ड्राइव के लिए लें:
    • संपर्क टैब पर क्लिक करें.
    • व्यू के रूप में "सभी संपर्क" चुनें और जाएं! पर क्लिक करें.
    • अपने नए शानदार Google पर एक्सपोर्ट करें बटन पर क्लिक करें.
    • " Wait_डॉट" देखें, लेकिन कुछ और होने की उम्मीद न करें.

Google स्प्रेडशीट से इंटरैक्ट करना

अगर आप Google कैलेंडर मैश-अप के स्रोत को देखेंगे, तो आप पाएंगे कि gcal_snippet.scf फ़ाइल में Google कैलेंडर सर्वर के लिए एक अमूर्त शामिल है. Google स्प्रेडशीट से इंटरैक्ट करने के लिए आपको Google स्प्रेडशीट सर्वर के लिए एक मिलती-जुलती फ़ाइल बनानी होगी. मैंने Salesforce.com AJAX प्रॉक्सी का इस्तेमाल करने और Google AuthSub के साथ पुष्टि करने के लिए, रॉन हेस के कोड का फिर से इस्तेमाल किया है. साथ ही, Google Calendar पर इवेंट लिखने वाले फ़ंक्शन को Google स्प्रेडशीट में जानकारी लिखने वाले फ़ंक्शन से बदल दिया है. इस फ़ाइल का पूरा स्रोत, g स्प्रेडशीट_snippet.scf में उपलब्ध है.

इसके बाद, मैंने संपर्क जानकारी के लिए Salesforce.com पर क्वेरी करने और उसे Google स्प्रेडशीट में लिखने के लिए, JavaScript export_contacts.scf S-Control में जोड़ा. Salesforce.com से डेटा निकालना आसान है. बस एक क्वेरी बनाएं और डेटा लौटाए जाने पर एक कॉलबैक फ़ंक्शन लागू करें. उदाहरण के लिए:

  var query = 'Select FirstName, LastName, Phone From Contact';
  var queryResult = sforce.connection.query(query, queryCallback);

Salesforce.com से संपर्क जानकारी मिलने के बाद, आपको यह पता लगाना होगा कि उसे कहां एक्सपोर्ट करना है. RESTful Google डेटा प्रोटोकॉल में, हर स्प्रेडशीट को एक यूनीक यूआरएल से पहचाना जा सकता है. मेटाफ़ीड यूआरएल http://spreadsheets.google.com/feeds/spreadsheets/private/full से क्वेरी करके, उपयोगकर्ता की स्प्रेडशीट (और उससे जुड़े यूआरएल) की सूची पाएं. नीचे दिए गए तरीके से, इन स्प्रेडशीट के ज़रिए इटरेट किया गया है और किसी खास शीर्षक वाली स्प्रेडशीट खोजी जा रही है. सही स्प्रेडशीट मिलने पर, उसे पहले वर्कशीट की सूची मिलती है. इसके बाद, पहली वर्कशीट के लिए सेल फ़ीड का यूआरएल दिखाता है.

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 स्प्रेडशीट' डेटा एपीआई में उपलब्ध फ़ीड के बारे में ज़्यादा जानकारी पहचान गाइड में मिल सकती है.

queryCallback फ़ंक्शन, सेल को अपडेट करने के अनुरोध भेजने के लिए ज़रूरी सेल फ़ीड के यूआरएल का पता लगाने के लिए, getCellFeedUrl तरीके का इस्तेमाल करता है. इसके बाद, एक बार में सेल की संपर्क जानकारी लिखता है.

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 तरीका gस्प्रेडशीट_snippet.scf एस-कंट्रोल में मौजूद है. इस तरीके से, दी गई पंक्ति और कॉलम में, सेल में बदलाव करने वाला यूआरएल मिलता है. इसके बाद, एचटीटीपी 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 डेटा API के साथ सेल अपडेट करने के तरीके पर ज़्यादा जानकारी डेवलपर गाइड में मिल सकती है.

Google Spreadsheets डेटा API https://spreadsheets.google.com सबडोमेन का उपयोग करती है, इसलिए ऊपर दिए गए कोड के काम करने से पहले, आपको Salesforce.com AJAX प्रॉक्सी सर्वर कॉन्फ़िगर करना होगा और https://spreadsheets.google.com जोड़ना होगा.

डेटा होल्ड करने के लिए, आपको Google Docs पर जाकर एक नई स्प्रेडशीट बनानी होगी. पक्का करें कि आपने इसे Salesforce.com संपर्क के तौर पर सेव किया है.

इन S-Control को अपलोड करने के बाद, आप अपनी संपर्क जानकारी को Google स्प्रेडशीट में एक्सपोर्ट कर पाएंगे. दूसरे तरीके से क्या होगा? Salesforce.com और Google डेटा एपीआई की नई जानकारी से, आप Google स्प्रेडशीट से संपर्क जानकारी को Salesforce.com पर इंपोर्ट करने के लिए भी कुछ कोड लिख सकते हैं.

नतीजा

इस लेख ने अब तक शुरुआत नहीं की है, लेकिन अब आपको Salesforce.com प्लैटफ़ॉर्म और Google Data API की परफ़ॉर्मेंस को बेहतर बनाने की ज़रूरत नहीं है. ऐसे सभी ऐप्लिकेशन के बारे में सोचें जिन्हें इन बेहतरीन सिस्टम का फ़ायदा पाने के लिए लिखा जा सकता है. एपीआई का Google Data फ़ैमिली ग्रुप लगातार बढ़ता रहता है. इससे, आपको अपने ऐप्लिकेशन में फ़ायदा पाने के लिए, ज़्यादा जानकारी मिलती है. Salesforce.com प्लैटफ़ॉर्म भी ऐसे कई टूल उपलब्ध कराता है जो इस लेख में शामिल नहीं थे. मुझे App Exchange पर आपके अगले एंटरप्राइज़ मैशअप की ज़रूरत है.

कोडिंग करते रहें!

रिसॉर्स