استراحت برای فروشنده دوره گرد: استفاده از داده های Google در Salesforce.com

Lane LiaBraaten، Google Developer Programs
نوامبر 2007

معرفی

Salesforce.com و Google میزبان برنامه‌های محبوب «نرم‌افزار به‌عنوان سرویس» هستند و هر دو سازمان APIهایی را ارائه می‌کنند که به توسعه‌دهندگان اجازه می‌دهد به ذخیره‌های بزرگ داده‌ای که این برنامه‌ها را نیرو می‌دهند دسترسی داشته باشند - و وقتی هر دو مجموعه API را با هم ترکیب می‌کنیم، چیزها جالب می‌شوند. استفاده از G Suite بیشتر و بیشتر در تنظیمات سازمانی ادامه می‌یابد و Salesforce.com یک پلتفرم گسترده برای ساخت برنامه‌های تجاری سفارشی ایجاد کرده است، بنابراین فرصت‌های زیادی برای توسعه‌دهندگان (این شما هستید!) وجود دارد تا قدرت Google و Salesforce.com را با هم ترکیب کنند. .

این مقاله به شما نشان می‌دهد که چگونه از APIهای RESTful Google Data برای شروع ساخت mashups سازمانی استفاده کنید، حتی اگر به تازگی با پلتفرم Salesforce.com یا پروتکل Google Data شروع کرده‌اید. من به شما کمک می کنم محیط توسعه خود را تنظیم کنید، Salesforce.com و Google mashup موجود را نصب کنید، و سپس خودتان بنویسید.

سلام، Salesforce.com!

اگر مانند من تازه کار Salesforce.com هستید، باید با ثبت نام برای یک حساب توسعه دهنده در ADN، شبکه توسعه دهنده Apex، شروع کنید. حساب توسعه‌دهنده به شما یک حساب Salesforce.com با ویژگی‌های کامل، به علاوه دسترسی به ویکی Apex و تابلوهای بحث می‌دهد.

در مرحله بعد، می خواهید Apex Toolkit برای Eclipse را دریافت کنید. جعبه ابزار به جاوا 1.5 و Eclipse 3.2.2 یا بهتر نیاز دارد. اگر راه خود را در Eclipse می شناسید، سایت به روز رسانی نرم افزار برای جعبه ابزار http://www.adnsandbox.com/eclipsetoolkit/10.0/ است. اگر با پلاگین های Eclipse آشنا نیستید یا در حین نصب مشکلی پیش آمد، ویکی Apex شامل دستورالعمل های دقیق نصب است.

پس از نصب جعبه ابزار، می توانید به محتوای راهنمای Apex که در سیستم راهنمای Eclipse یکپارچه شده است، دسترسی پیدا کنید. در Eclipse، به Help | بروید مطالب راهنما | Apex Toolkit برای Eclipse برای دیدن این محتوا. یکی از منابع کمکی یک آموزش شروع سریع است که به شما نشان می دهد چگونه یک پروژه جدید ایجاد کنید و S-Controls، کلاس ها و تریگرها را اضافه کنید. اگر قبلاً با کد Apex کار نکرده اید، باید این آموزش را طی کنید و قبل از ادامه کار، یک پروژه Apex ایجاد کنید.

در حال صادر کردن رویدادها به Google Calendar

رون هس یک برنامه Google Calendar Mash-up نوشت که به شما امکان می دهد رویدادها را از Salesforce.com به Google Calendar صادر کنید. رون همچنین مقاله ای نوشت که نحوه عملکرد mashup او را توضیح می دهد. برنامه Google Spreadsheets که بعداً نحوه ساخت آن را به شما نشان خواهم داد از ترکیب تقویم Google Ron الگوبرداری شده است. ممنون رون!

اگر از کاربران قدرتمند Salesforce.com هستید، احتمالاً می‌توانید برنامه تقویم Google Ron را بدون هیچ دستورالعملی ادغام کرده و از آن استفاده کنید. من در ابتدا به کمک کمی نیاز داشتم، بنابراین کاری که من انجام دادم تا برنامه Ron را در عمل ببینم.

  1. برنامه را نصب کنید:
    • به صفحه Google Calendar Mash-up بروید و روی دریافت آن کلیک کنید.
    • اعتبار ADN خود را وارد کنید و روی Continue کلیک کنید.
    • شرایط و ضوابط را بخوانید و روی Continue کلیک کنید.
    • از طریق صفحه "بررسی محتویات بسته" روی Next کلیک کنید.
    • یک سطح امنیتی را انتخاب کنید و روی Next کلیک کنید.
    • روی Install کلیک کنید.
  2. پراکسی Salesforce.com AJAX را پیکربندی کنید
    • در منوی "Administration Setup"، روی Security Controls | کلیک کنید تنظیمات سایت از راه دور
    • روی New Remote Site کلیک کنید.
    • Google را به عنوان "Remote Site Name" و برای "Remote Site URL" از https://www.google.com استفاده کنید.
    • روی ذخیره کلیک کنید.
  3. دکمه «افزودن به Google» را به صفحه جزئیات رویداد اضافه کنید:
    • در منوی "App Setup"، روی Customize | کلیک کنید فعالیت ها | طرح‌بندی صفحه رویداد .
    • روی Edit در ردیف "Event Layout" کلیک کنید.
    • روی قسمت «دکمه‌های صفحه جزئیات» دوبار کلیک کنید.
    • «افزودن به Google» را برجسته کرده و برای افزودن دکمه، روی پیکان سمت راست (>) کلیک کنید.
    • روی OK کلیک کنید.
    • روی Save در صفحه "Page Layout Properties" کلیک کنید.
  4. یک رویداد را صادر کنید
    • برای مشاهده تقویم خود، روی صفحه اصلی در بالا سمت چپ کلیک کنید.
    • اگر هیچ رویدادی ندارید، روی رویداد جدید کلیک کنید تا یکی ایجاد شود.
    • برای مشاهده صفحه جزئیات رویداد روی یک رویداد کلیک کنید.
    • روی دکمه افزودن به گوگل کلیک کنید.
    • از طریق هشدار جاوا اسکریپت روی OK کلیک کنید
    • با نام کاربری و رمز عبور گوگل خود وارد شوید.
    • روی Grant access کلیک کنید تا به برنامه SalesForce دسترسی نوشتن به تقویم Google شما بدهید.
    • رویداد را در تقویم Google خود مشاهده کنید

ساخت اپلیکیشن Google Spreadsheets

خوب، احتمالاً از کلیک کردن در اطراف صفحات Salesforce.com خسته شده اید و آماده نوشتن کد هستید. Eclipse را دوباره فعال کنید و خواهید دید که پروژه Apex که ایجاد کردید اکنون حاوی S-Controls برای برنامه تقویم گوگل رون است. دلیلش این است که Apex Toolkit برای Eclipse دائماً با Salesforce.com همگام می‌شود، خیلی جالب است، نه؟

می‌توانید برنامه Google Data خود را با استفاده مجدد از برخی از عملکردهای Google Calendar Mash-up، مانند کنترل‌های احراز هویت، بسازید. در ادامه این بخش، من به شما نشان خواهم داد که چگونه برنامه ای بسازید که مخاطبین Salesforce.com شما را به صفحه گسترده Google صادر می کند.

انتشار یک S-Control ساده

S-Control فایلی است که توسط Salesforce.com میزبانی می شود و زمانی که کاربران به برنامه شما دسترسی دارند در مرورگرهای وب اجرا می شود. S-Control می تواند حاوی هر نوع محتوایی باشد که می توانید در مرورگر وب نمایش دهید یا اجرا کنید، مانند HTML، CSS یا جاوا اسکریپت.

قطعات متحرک زیادی در Salesforce.com و Google mashup وجود دارد، بنابراین اولین کاری که انجام دادم این بود که یک دکمه "Export to Google" را به صفحه لیست مخاطبین اضافه کردم که یک S-Control ساده را فراخوانی می کند تا مطمئن شود همه موارد قبل از اینکه جاوا اسکریپت را کامل کنم، لوله کشی درست بود.

در پروژه Apex خود، روی پوشه "S-Controls" کلیک راست کرده و Apex | S-Control جدید . به S-Control جدید یک برچسب و نام export_contacts بدهید، نوع آن را به صورت Custom HTML بگذارید و روی Finish کلیک کنید.

S-Control جدید حاوی یک فایل HTML اسکلتی خواهد بود. شما یک دسته جاوا اسکریپت را در <head> اضافه خواهید کرد، اما می توانید ابتدا <body> را پر کنید، فقط برای اینکه در حین صادرات مخاطبین چیزی برای نشان دادن کاربر وجود داشته باشد. این HTML را در بدنه 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. از Eclipse برای انتشار فایل S-Control استفاده کنید:
    • روی پروژه Apex خود کلیک راست کرده و Apex | را انتخاب کنید با Salesforce همگام شوید .
    • S-Control جدید خود را در درخت دایرکتوری پیدا کنید، روی آن کلیک راست کرده و گزینه Override remote and public to server را انتخاب کنید.
    • اگر نمی توانید S-Control خود را پیدا کنید، ممکن است Apex Toolkit قبلاً آن را برای شما آپلود کرده باشد، اما ایده خوبی است که از دیدگاه همگام سازی برای اطمینان از اجرای آخرین کد روی سرور استفاده کنید.
  2. از رابط کاربری Salesforce.com برای تعریف دکمه ای استفاده کنید که این S-Control را فراخوانی می کند:
    • در منوی "App Setup"، روی Customize | کلیک کنید اطلاعات تماس | دکمه ها و پیوندها
    • در بخش «دکمه‌ها و پیوندهای سفارشی»، روی جدید کلیک کنید.
    • برای برچسب Export to Google را وارد کنید و Export_to_Google را به عنوان نام نگه دارید.
    • "دکمه لیست" را به عنوان نوع نمایش انتخاب کنید.
    • "Custom S-Control" را به عنوان منبع محتوا انتخاب کنید.
    • "نمایش در پنجره موجود با نوار کناری" را به عنوان رفتار انتخاب کنید.
    • "export_contacts" را از منوی Custom S-Controls انتخاب کنید.
  3. دکمه را به لیست مخاطبین اضافه کنید:
    • در منوی "App Setup"، روی Customize | کلیک کنید اطلاعات تماس | جستجوی چیدمان ها
    • در ردیف «نمایش فهرست مخاطبین» روی ویرایش کلیک کنید.
    • برای افزودن دکمه، «صادر کردن به Google» را برجسته کنید و روی پیکان سمت راست (>) کلیک کنید.
    • روی ذخیره کلیک کنید.
  4. آن را برای تست درایو ببرید:
    • روی تب Contacts کلیک کنید.
    • "همه مخاطبین" را به عنوان View انتخاب کنید و روی Go کلیک کنید! .
    • دکمه صادرات به Google براق جدید خود را کلیک کنید.
    • "نقطه_انتظار" را تماشا کنید اما انتظار نداشته باشید اتفاق دیگری بیفتد.

تعامل با صفحات گسترده گوگل

اگر به منبع Google Calendar Mash-up نگاه کنید، خواهید دید که فایل gcal_snippet.scf حاوی یک انتزاع برای سرور Google Calendar است. برای تعامل با Google Spreadsheets، باید یک فایل مشابه برای سرور Google Spreadsheets ایجاد کنید. من از کد ران هس برای استفاده از پراکسی Salesforce.com AJAX و احراز هویت با Google AuthSub دوباره استفاده کردم و عملکردی را که رویدادها را در تقویم Google می نویسد با عملکردی که اطلاعات را در صفحات گسترده Google می نویسد جایگزین کردم. منبع کامل این فایل در gspreadsheet_snippet.scf موجود است.

سپس، جاوا اسکریپت را به export_contacts.scf S-Control اضافه کردم تا اطلاعات تماس Salesforce.com را جستجو کرده و آن را در صفحه گسترده Google بنویسم. دریافت داده ها از Salesforce.com آسان است. فقط یک پرس و جو بسازید و یک تابع callback ارائه کنید تا در هنگام بازگشت داده ها اجرا شود. مثلا:

  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 . روش زیر از طریق این صفحات گسترده تکرار می شود و به دنبال صفحه گسترده ای با عنوان خاص می گردد. هنگامی که صفحه گسترده صحیح را پیدا کرد، ابتدا لیست کاربرگ ها را دریافت می کند، سپس 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 در 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);
} 

اطلاعات بیشتر درباره نحوه به‌روزرسانی سلول‌ها با API داده‌های صفحات گسترده Google را می‌توانید در راهنمای برنامه‌نویس پیدا کنید.

API داده Google Spreadsheets از زیر دامنه https://spreadsheets.google.com استفاده می کند، بنابراین قبل از اینکه کد بالا کار کند، باید سرور پراکسی Salesforce.com AJAX را پیکربندی کنید و https://spreadsheets.google.com اضافه کنید.

همچنین باید به Google Docs بروید و یک صفحه گسترده جدید برای نگهداری داده ها ایجاد کنید. مطمئن شوید که آن را به عنوان مخاطبین Salesforce.com ذخیره کرده اید.

هنگامی که این S-Controls را آپلود کردید، می‌توانید اطلاعات تماس خود را به صفحه گسترده Google صادر کنید. راه دیگر چطور؟ با دانش جدید خود از Salesforce.com و APIهای Google Data، همچنین می‌توانید کدی برای وارد کردن اطلاعات تماس از صفحات گسترده Google به Salesforce.com بنویسید.

نتیجه

این مقاله به سختی سطح را خراشیده است، اما اکنون که در پلتفرم Salesforce.com و Google Data API به سرعت عمل کرده‌اید، به تمام برنامه‌هایی فکر کنید که می‌توانید برای استفاده از این سیستم‌های قدرتمند بنویسید. خانواده Google Data از APIها همیشه در حال رشد است و اطلاعات بیشتری را در اختیار شما قرار می دهد تا در برنامه های خود استفاده کنید، و پلت فرم Salesforce.com ابزارهای مفید بسیاری را ارائه می دهد که در این مقاله به آنها پرداخته نشده است. من به دنبال ترکیب سازمانی بعدی شما در AppExchange خواهم بود.

کد نویسی مبارک!

منابع