REST לאנשי מכירות: שימוש בנתוני Google ב-Salesforce.com

Lan LiaBraaten, Google Developers Program
נובמבר 2007

מבוא

Salesforce.com ו-Google מארחות אפליקציות פופולריות מסוג "תוכנה כשירות", ושני הארגונים מספקים ממשקי API שמאפשרים למפתחים לגשת אל מאגרי הנתונים הגדולים שמעודדים את היישומים האלה, והדברים הופכים למעניינים כשמשלבים את שתי קבוצות ממשקי ה-API. G Suite ממשיך להשתמש בו שוב ושוב במסגרת הארגון ו-Salesforce.com בנה פלטפורמה נרחבת לבניית אפליקציות עסקיות בהתאמה אישית, כך שלמפתחים יש הזדמנויות רבות (כלומר אתם!) לשלב את היכולות של Google ושל Salesforce.com.

במאמר הזה נסביר איך להשתמש ב-API ל-REST של נתונים מ-Google כדי להתחיל ב-mashup ארגוני, גם אם אתם רק מתחילים להשתמש ב-Salesforce.com או בפרוטוקול של Google Data. אעזור לך להגדיר את סביבת הפיתוח, להתקין את Salesforce.com ו-Google Mashup הקיימים שלך, ולאחר מכן אכתוב דפוס משלך.

שלום, Salesforce.com!

אם אתם משתמשים חדשים ב-Salesforce.com כמוני, אתם צריכים קודם להירשם לחשבון פיתוח ב-ADN, רשת המפתחים של Apex. חשבון הפיתוח מספק חשבון Salesforce.com עם כל התכונות, וגם גישה ל-Apex wiki וללוחות דיונים.

בשלב הבא, תרצו לקבל את Apex Toolkit for Eclipse. ערכת הכלים מחייבת Java 1.5 ו-Eclipse 3.2.2 ומעלה. אם התמצאת בממשק של Eclipse, אתר עדכון התוכנה עבור ערכת הכלים הוא http://www.adnsandbox.com/eclipsetoolkit/10.0/. אם אין לכם ניסיון עם יישומי פלאגין של Eclipse, או אם משהו השתבש במהלך ההתקנה, תוכלו להיעזר ב-Wix של Apex עם הוראות מפורטות להתקנה.

אחרי התקנת ערכת הכלים תוכלו לגשת לתוכן העזרה של Apex שמשולב במערכת העזרה של Eclipse. כדי לצפות בתוכן הזה, יש ללחוץ על עזרה | תוכן עזרה | Apex Toolkit for Eclipse. אחד ממשאבי העזרה הוא מדריך למתחילים, שיראה לך איך ליצור פרויקט חדש ולהוסיף אמצעי בקרה, שיעורים וטריגרים. אם לא עבדתם בעבר על קוד של Apex, תוכלו לעבור על המדריך הזה וליצור פרויקט Apex לפני המעבר.

ייצוא אירועים ליומן Google

רון הס כתבה אפליקציית Mash-up ליומן Google שמאפשרת לייצא אירועים מ-Salesforce.com ליומן Google. רון גם כתב מאמר שמסביר איך פועל ה-mashup שלו. העיצוב של יישום הגיליונות האלקטרוניים של Google אראה לך מאוחר יותר כיצד לבנות אותו מאוחר יותר, באמצעות מודל של שילובים של רון ביומן Google. תודה, רון!

אם אתם משתמשים מתקדמים ב-Salesforce.com, סביר להניח שתוכלו לשלב את אפליקציית יומן Google של רון ולהשתמש בה ללא הוראות. הייתי צריך קצת עזרה, אז זה מה שעשיתי כדי לראות את האפליקציה של רון בפעולה.

  1. מתקינים את האפליקציה:
    • נכנסים לדף מיזוג נתונים ביומן Google ולוחצים על להורדת האפליקציה.
    • מזינים את פרטי הכניסה של ה-ADN ולוחצים על המשך.
    • קוראים את התנאים וההגבלות ולוחצים על המשך.
    • לוחצים על הבא בדף "בדיקת תוכן החבילה".
    • בוחרים רמת אבטחה ולוחצים על הבא.
    • לחץ על התקן.
  2. הגדרת שרת ה-proxy של Salesforce.com AJAX
    • בתפריט 'הגדרת ניהול', לוחצים על בקרות אבטחה | הגדרות לאתרים מרוחקים.
    • לוחצים על אתר מרוחק חדש.
    • מזינים את Google בתור "שם האתר המרוחק", ועבור "כתובת אתר מרוחקת", משתמשים בכתובת https://www.google.com.
    • לוחצים על שמירה.
  3. מוסיפים את הלחצן 'הוספה ל-Google' בדף פרטי האירוע:
    • בתפריט 'הגדרת אפליקציה', לוחצים על התאמה אישית | פעילויות | פריסות של דפי אירועים.
    • לוחצים על עריכה בשורה 'פריסת אירוע'.
    • לוחצים לחיצה כפולה על האזור 'לחצנים של דפי פרטים'.
    • כדי להוסיף לחצן, צריך להדגיש את האפשרות "הוספה ל-Google" וללחוץ על החץ ימינה (>).
    • לוחצים על OK.
    • בדף 'מאפייני פריסת דף', לוחצים על שמירה.
  4. ייצוא אירוע
    • לוחצים על דף הבית בפינה הימנית העליונה כדי להציג את היומן.
    • אם אין אירועים, לוחצים על אירוע חדש כדי ליצור אירוע.
    • לוחצים על אירוע כלשהו כדי להציג את הדף 'פרטי האירוע'.
    • לוחצים על הלחצן הוספה ל-Google.
    • לוחצים על אישור דרך התראת JavaScript.
    • נכנסים לחשבון באמצעות שם המשתמש והסיסמה של חשבון Google.
    • לוחצים על הענקת גישה כדי לתת לאפליקציית SalesForce גישת כתיבה ליומן Google.
    • להציג את האירוע ביומן Google

יצירת אפליקציה של Google Sheets

סביר להניח שנמאס לך ללחוץ על הדפים של Salesforce.com ומוכן לכתוב קוד. הפעילו שוב את Eclipse, ופרויקט ה-Apex שיצרתם כולל עכשיו את S-Controls באפליקציית יומן Google ל-Ron. הסיבה לכך היא ש-Apex Toolkit של Eclipse מסתנכרן כל הזמן עם Salesforce.com, ממש מגניב?

אפשר ליצור בעצמכם אפליקציית נתוני Google ולהשתמש שוב בחלק מהפונקציות של השילוב של יומן Google, כמו פקדי האימות. בהמשך הסעיף הזה אראה לכם איך ליצור אפליקציה שמייצאת את אנשי הקשר שלכם ב-Salesforce.com לגיליון אלקטרוני של Google.

פרסום של S-Control פשוט

S-Control הוא קובץ המתארח ב-Salesforce.com המבוצע בדפדפני אינטרנט כאשר משתמשים ניגשים ליישום שלך. S-Control יכול להכיל כל סוג של תוכן שניתן להציג או להפעיל בדפדפן אינטרנט, כגון HTML , CSS או JavaScript.

יש לא מעט חלקים נעים ב-Salesforce.com ו-Google mashup, כך שהדבר הראשון שעשיתי היה להוסיף לחצן 'ייצוא ל-Google' לדף רשימת אנשי הקשר, שמפעיל S-Control-פשוט כדי לוודא שכל הצנרת נכונה, לפני שהתעניינתי בברכיים ב-JavaScript.

בפרויקט Apex, לוחצים לחיצה ימנית על התיקייה "S-Controls" ובוחרים באפשרות Apex | New S-Control. מזינים את שם ה-S-Control החדש בתווית ובשם של export_contacts, משאירים את הסוג כ-HTML מותאם אישית ולוחצים על Finish (סיום).

ה-S-Control החדש יכיל קובץ HTML בסיסי. פעולה זו תוסיף קבוצה של JavaScript ב-<head>, אך ניתן למלא את ה-<body> תחילה, רק כדי שנוכל להציג למשתמש משהו במהלך הייצוא של אנשי הקשר. יש להעתיק את ה-HTML לגוף של ה-S-Control כדי להציג את נקודות ההמתנה ואת הלוגו של Google Sheets:

<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 | Sync with Sync.
    • מאתרים את ה-S-Control החדש בעץ הספרייה, לוחצים עליו לחיצה ימנית ובוחרים באפשרות שינוי השלט רחוק ופרסום לשרת.
    • אם לא מוצאים את ה-S-Control, ייתכן ש-Apex Toolkit כבר העלה אותו עבורכם. אבל כדאי להשתמש בנקודת המבט של הסנכרון כדי לוודא שהקוד העדכני ביותר פועל בשרת.
  2. באמצעות ממשק המשתמש של Salesforce.com, מגדירים לחצן להפעלת התכונה S-Control:
    • בתפריט 'הגדרת אפליקציה', לוחצים על התאמה אישית | אנשי קשר | לחצנים וקישורים.
    • בקטע 'לחצנים וקישורים מותאמים אישית', לוחצים על חדש.
    • מזינים ייצוא ל-Google עבור התווית, והשאר את השם Export_to_Google זהה לשם.
    • בוחרים באפשרות 'לחצן רשימה' בתור סוג התצוגה.
    • בוחרים באפשרות 'בקרת S מותאמת אישית' כמקור התוכן.
    • בחר 'הצגה בחלון קיים עם סרגל צד' כהתנהגות.
    • בוחרים 'ייצוא_אנשי קשר' מהתפריט 'אמצעי בקרה מותאמים אישית'.
  3. מוסיפים את הלחצן לרשימת אנשי הקשר:
    • בתפריט 'הגדרת אפליקציה', לוחצים על התאמה אישית | אנשי קשר | פריסות חיפוש.
    • לוחצים על עריכה בשורה 'תצוגת רשימה של אנשי קשר'.
    • הדגש את 'ייצוא ל-Google' ולחיצה על החץ ימינה (>) כדי להוסיף את הלחצן.
    • לוחצים על שמירה.
  4. יוצאים לנסיעת מבחן:
    • לוחצים על הכרטיסייה אנשי קשר.
    • בוחרים באפשרות 'כל אנשי הקשר' בתצוגה ולוחצים על סע!.
    • לוחצים על הלחצן החדש והנוצץ ייצוא ל-Google.
    • יש לצפות בקטע "בהמתנה_לנקודות", אבל לא צפוי לקרות משהו אחר.

אינטראקציה עם גיליונות אלקטרוניים של Google

אם תסתכל על המקור של האירוע המעורב של יומן Google, תראה שקובץ gcal_snippet.scf מכיל הפשטה לשרת של יומן Google. כדי לקיים אינטראקציה עם גיליונות אלקטרוניים של Google, עליך ליצור קובץ דומה עבור שרת הגיליונות האלקטרוניים של Google. נעשה שימוש חוזר בקוד של רון הס כדי להשתמש בשרת ה-proxy של Salesforce.com בנושא AJAX ואימות באמצעות 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 Data באמצעות כתובת URL ייחודית. אפשר לקבל רשימה של גיליונות אלקטרוניים של משתמשים (וכתובות ה-URL המשויכות אליהם) על ידי שליחת שאילתה לכתובת ה-URL של המטא-פיד: 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);
    }
  }
}

מידע נוסף על הפידים הזמינים ב-Data API של Google Sheets זמין במדריך העזר.

הפונקציה 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 Sheets, אפשר לעיין במדריך למפתחים.

ממשק ה-API של נתוני Google Sheets משתמש בתת-הדומיין https://spreadsheets.google.com, לכן כדי שהקוד שלמעלה יעבוד, יהיה עליך להגדיר את שרת ה-proxy של Salesforce.com AJAX ולהוסיף את https://spreadsheets.google.com.

בנוסף, תצטרכו לעבור אל Google Docs וליצור גיליון אלקטרוני חדש שיכלול את הנתונים. הקפידו לשמור אותו כאנשי קשר ב-Salesforce.com.

אחרי העלאה של פקדי ה-S האלה, תהיה לך אפשרות לייצא את הפרטים ליצירת קשר לגיליון אלקטרוני של Google. מה לגבי הדרך השנייה? באמצעות הידע החדש שלכם ב-Salesforce.com ובממשקי ה-API של נתונים של Google, תוכלו גם לכתוב קוד שיייבא את פרטי אנשי הקשר מגיליונות אלקטרוניים ב-Google אל Salesforce.com.

סיכום

המאמר הזה כמעט לא גרם להצגה של פלטפורמות שונות, אבל עכשיו כשיש לכם גישה מהירה לפלטפורמת Salesforce.com ולממשקי ה-API של Google Data, אתם יכולים לחשוב על כל האפליקציות שאפשר לכתוב כדי למנף את המערכות המתקדמות האלה. משפחת ממשקי ה-API של נתוני Google גדלה כל הזמן, וחושפים מידע נוסף שמאפשר לכם למנף באפליקציות שלכם. פלטפורמת Salesforce.com מציעה כלים שימושיים רבים שלא נכללו במאמר הזה. אני מחפש את ה-mashup הארגוני הבא שלך ב-TheExchangeExchange.

שיהיה בהצלחה!

משאבים