REST لبائع السفر: استخدام بيانات Google على Salesforce.com

لين ليابراتين، برامج مطوّري برامج Google
تشرين الثاني (نوفمبر) 2007

المقدمة

يستضيف كل من Salesforce.com وGoogle تطبيقات "البرامج كخدمة" الشائعة وتقدم كلتا المؤسستين واجهات برمجة تطبيقات تتيح لمطوّري البرامج إمكانية الوصول إلى مستودعات البيانات الكبيرة التي تشغل هذه التطبيقات، وتبدأ الأمور في الاهتمام عندما ندمج كلتا مجموعتي التطبيقات. يستمر استخدام G Suite بشكلٍ متزايد في إعداد المؤسسة، وقد صمَّم Salesforce.com نظامًا أساسيًا شاملاً لإنشاء تطبيقات النشاط التجاري المخصصة، لذلك هناك العديد من الفرص للمطورين (أنت!) للجمع بين قوة Google وSalesforce.com.

ستوضّح لك هذه المقالة كيفية استخدام واجهات برمجة تطبيقات RESTful Google Data لبدء إنشاء تطبيقات الويب المركّبة للمؤسسات، حتى إذا كنت قد بدأت للتو في استخدام منصة Salesforce.com أو بروتوكول بيانات Google. سأساعدك في إعداد بيئة التطوير، وتثبيت موقع ويب حالي لـ Salesforce.com ومزيج من Google، ثم كتابة بصمتك الخاصة.

مرحبًا، Salesforce.com!

إذا كنت مستخدمًا جديدًا لـ Salesforce.com كما كنت، فسيلزمك البدء من خلال الاشتراك للحصول على حساب مطور برامج على ADN، وهو شبكة Apex لمطوري البرامج. يمنحك حساب مطوّر البرامج حسابًا مكتمل الميزات في 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، انتقل إلى Help | Help Contents | Apex Toolkit for Eclipse للاطلاع على هذا المحتوى. يُعد أحد موارد المساعدة برنامجًا تعليميًا لبدء التشغيل السريع يعرض لك كيفية إنشاء مشروع جديد وإضافة عناصر تحكم وعناصر تحكم وعوامل تشغيل S. إذا لم تكن قد استخدمت شفرة Apex من قبل، يجب الاطلاع على هذا البرنامج التعليمي وإنشاء مشروع Apex قبل المتابعة.

تصدير الأحداث إلى تقويم Google

كتب رون هيس تطبيق دمج تقويم Google الذي يتيح لك تصدير الأحداث من Salesforce.com إلى تقويم Google. كما كتب رون مقالة تشرح كيفية عمل المزج. تم تصميم تطبيق جداول بيانات Google الذي سأوضح لك كيفية إنشائه لاحقًا بعد دمج رون لتقويم Google. شكرًا رون!

إذا كنت مستخدمًا فعالاً في Salesforce.com، فمن المحتمل أن تتمكن من دمج تطبيق تقويم Google لأحمد واستخدامه بدون أي تعليمات. كنت بحاجة إلى بعض المساعدة في البداية، لذا إليك ما فعلته لمشاهدة تطبيق رون بشكل عملي.

  1. ثبِّت التطبيق:
    • انتقل إلى صفحة مزج تقويم Google وانقر على الحصول عليه الآن.
    • أدخِل بيانات اعتماد ADN وانقر على Continue (متابعة).
    • اقرأ الأحكام والشروط وانقر على متابعة.
    • انقر على التالي من خلال صفحة "فحص محتويات الحزمة".
    • اختَر مستوى الأمان وانقر على التالي.
    • انقر على تثبيت.
  2. ضبط خادم وكيل Salesforce.com AJAX
    • في قائمة "إعداد الإدارة"، انقر على عناصر التحكم في الأمان | إعدادات الموقع البعيد.
    • انقر على موقع بعيد جديد.
    • أدخل Google باعتباره "اسم الموقع البعيد" وبالنسبة إلى "عنوان URL للموقع البعيد"، استخدم https://www.google.com.
    • انقر على حفظ.
  3. أضِف الزر "إضافة إلى Google" إلى صفحة تفاصيل الحدث:
    • في قائمة "إعداد التطبيق"، انقر على تخصيص | الأنشطة | تنسيقات صفحة الحدث.
    • انقر على تعديل في صف "تنسيق الحدث".
    • انقر نقرًا مزدوجًا على منطقة "أزرار صفحة التفاصيل".
    • حدد "إضافة إلى Google" وانقر على السهم لليسار (>) لإضافة الزر.
    • انقر على حسنًا.
    • انقر على حفظ في صفحة "خصائص تنسيق الصفحة".
  4. تصدير حدث
    • انقر على الصفحة الرئيسية في أعلى يمين الصفحة، لعرض تقويمك.
    • إذا لم تكن لديك أي أحداث، انقر على حدث جديد لإنشاء حدث.
    • انقر على حدث لعرض صفحة تفاصيل الحدث.
    • انقر على الزر إضافة إلى Google.
    • انقر على موافق من خلال تنبيه JavaScript
    • سجّل الدخول باستخدام اسم المستخدم وكلمة المرور في Google.
    • انقر على منح حق الوصول لمنح تطبيق SalesForce إمكانية الدخول للكتابة على "تقويم Google".
    • عرض الحدث في تقويم Google

إنشاء تطبيق لجداول بيانات Google

حسنًا، يبدو أنك سئمت من النقر على صفحات Salesforce.com وعلى استعداد لكتابة بعض الرموز. أعد تشغيل Eclipse مرة أخرى وسترى أن مشروع Apex الذي أنشأته يحتوي الآن على عناصر التحكم في S لتطبيق تقويم Google لرون. ويرجع ذلك إلى أن مجموعة أدوات Apex لـ Eclipse تتم مزامنتها باستمرار مع Salesforce.com - شيء رائع حقًا؟

يمكنك إنشاء تطبيق بيانات Google الخاص بك مع إعادة استخدام بعض وظائف مزج تقويم Google، مثل عناصر التحكم في المصادقة. في بقية هذا القسم، سأوضح لكم كيفية إنشاء تطبيق يصدّر جهات اتصال Salesforce.com إلى جدول بيانات Google.

نشر عنصر تحكم S-Control بسيط

S-Control هو ملف تتم استضافته من خلال Salesforce.com ويتم تنفيذه في متصفحات الويب عند وصول المستخدمين إلى تطبيقك. يمكن أن يحتوي عنصر تحكم S-Control على أي نوع من المحتوى يمكنك عرضه أو تشغيله في متصفح ويب، مثل HTML أو CSS أو جافا سكريبت.

هناك عدد قليل من الأجزاء المتحركة في Salesforce.com وGoogle المركب، لذا فإن أول شيء فعلته هو إضافة الزر "تصدير إلى Google" إلى صفحة قائمة جهات الاتصال التي تستدعي تحكمًا بسيطًا في S-Control فقط للتأكد من صحة جميع أعمال السباكة قبل أن تركع في ركب جافا سكريبت.

في مشروع Apex، انقر بزر الماوس الأيمن على مجلد "S-Controls" واختَر Apex | New S-Control. امنح عنصر تحكم S-Control الجديد تصنيفًا واسمًا لـ export_contacts واترك النوع على HTML مخصص وانقر على إنهاء.

سيحتوي عنصر تحكم S-Control الجديد على ملف HTML أساسي. ستضيف مجموعة من جافا سكريبت في العنوان <head>، ولكن يمكنك ملء <body> أولاً، وذلك حتى يظهر شيء لعرضه للمستخدم أثناء تصدير جهات الاتصال. انسخ شفرة HTML هذه في النص الأساسي لعنصر التحكم في S لعرض "نقاط الانتظار" وشعار جداول بيانات 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 وإعداد زر لاستدعاءه.

  1. استخدِم Eclipse لنشر ملف التحكم S:
    • انقر بزر الماوس الأيمن على مشروع Apex وحدد Apex | المزامنة مع Salesforce.
    • ابحث عن عنصر تحكم S-Control الجديد في شجرة الدليل، وانقر بزر الماوس الأيمن عليه واختر إلغاء التحكم عن بعد والنشر على الخادم.
    • إذا لم تتمكن من العثور على S-Control، فربما تكون مجموعة أدوات Apex قد حمّلتها لك من قبل، ولكن من الأفضل استخدام منظور المزامنة لضمان عمل أحدث شفرة على الخادم.
  2. استخدِم واجهة مستخدم Salesforce.com لتعريف الزر الذي سيستدعي عنصر التحكم S-Control هذا:
    • في قائمة "إعداد التطبيق"، انقر على تخصيص | جهات الاتصال | الأزرار والروابط.
    • في قسم "الأزرار والروابط المخصصة"، انقر على جديد.
    • أدخِل Export to Google (تصدير إلى Google) للتصنيف، واترك Export_to_Google كاسم.
    • اختر "زر القائمة" كنوع العرض.
    • اختر "التحكم في S-Custom" كمصدر المحتوى.
    • اختر "عرض في النافذة الحالية مع الشريط الجانبي" كالسلوك.
    • اختر "export_contacts" من قائمة عناصر تحكم S المخصصة.
  3. أضِف الزر إلى قائمة جهات الاتصال:
    • في قائمة "إعداد التطبيق"، انقر على تخصيص | جهات الاتصال | تنسيقات البحث.
    • انقر على تعديل في صف "عرض قائمة جهات الاتصال".
    • حدد "تصدير إلى Google" وانقر على السهم لليسار (>) لإضافة الزر.
    • انقر على حفظ.
  4. يمكنك إجراء اختبار قيادة:
    • انقر على علامة التبويب جهات الاتصال.
    • حدد "جميع جهات الاتصال" كعرض، ثم انقر على انتقال!
    • انقر على زر تصدير إلى Google اللامع الجديد.
    • مشاهدة "waiting_dots" ولكن لا تتوقع حدوث أي شيء آخر.

التفاعل مع جداول بيانات Google

إذا ألقيت نظرة على مصدر مزج تقويم Google، فستلاحظ أن ملف gcal_snippet.scf يحتوي على تجريد لخادم تقويم Google. للتفاعل مع جداول بيانات Google، يجب إنشاء ملف مشابه لخادم جداول بيانات Google. لقد أعدت استخدام شفرة رون هيس لاستخدام وكيل Salesforce.com AJAX والمصادقة باستخدام Google AuthSub واستبدلت الوظيفة التي تكتب الأحداث في تقويم Google بواحدة تكتب المعلومات في جداول بيانات Google. المصدر الكامل لهذا الملف متاح في gspreadsheet_snippet.scf.

بعد ذلك، أضفت جافا سكريبت إلى عنصر التحكم 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، سيكون عليك معرفة مكان تصديرها. في بروتوكول بيانات Google RESTful، يمكن تحديد كل جدول بيانات من خلال عنوان 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);
    }
  }
}

يمكن العثور على مزيد من المعلومات حول الخلاصات المتاحة في واجهة برمجة التطبيقات لبيانات جداول بيانات 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 في عنصر التحكم gspreadsheet_snippet.scf S-Control. تحصل هذه الطريقة على عنوان 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 في دليل مطوّر البرامج.

تستخدم واجهة برمجة التطبيقات لبيانات جداول بيانات Google النطاق الفرعي https://spreadsheets.google.com، لذا قبل أن تعمل الشفرة أعلاه، ستحتاج إلى تهيئة خادم وكيل Salesforce.com AJAX وإضافة https://spreadsheets.google.com.

سيلزمك أيضًا الانتقال إلى مستندات Google وإنشاء جدول بيانات جديد للاحتفاظ بالبيانات. تأكد من حفظه كـ جهات اتصال Salesforce.com.

بعد تحميل عناصر التحكم في S هذه، ستتمكن من تصدير معلومات الاتصال إلى جدول بيانات Google. ماذا عن الطريقة الأخرى؟ من خلال معرفتك الجديدة بـ Salesforce.com وواجهات برمجة التطبيقات لبيانات Google، يمكنك أيضًا كتابة بعض الرموز لاستيراد معلومات الاتصال من جداول بيانات Google إلى Salesforce.com.

الخاتمة

لقد خدشت هذه المقالة بالكاد، ولكن الآن بما أنك على علم بآخر مستجدات النظام الأساسي Salesforce.com وواجهات برمجة التطبيقات لبيانات Google، فكر في جميع التطبيقات التي يمكنك كتابتها للاستفادة من هذه الأنظمة الفعالة. تنمو مجموعة بيانات Google API دائمًا، وتكشف لك المزيد من المعلومات التي يمكنك الاستفادة منها في تطبيقاتك، ويوفر النظام الأساسي لـ Salesforce.com العديد من الأدوات المفيدة التي لم يتم تناولها في هذه المقالة. سأبحث عن المزج التالي للمؤسسة في AppExchange.

نتمنى لك التوفيق في الترميز.

الموارد