Gezgin Satıcı İçin REST: Salesforce.com'da Google Verilerini Kullanma

Lane LiaBraaten, Google Developer Programs
Kasım 2007

Giriş

Salesforce.com ve Google, popüler "Hizmet Olarak Yazılım" uygulamalarına ev sahipliği yapar. Her iki kuruluş da geliştiricilerin bu uygulamalara güç veren büyük veri depolarına erişmesine olanak tanıyan API'ler sağlar. Her iki API kümesini birleştirdiğimizde işler ilginçleşmeye başlar. G Suite, kurumsal ortamda ve Salesforce.com'da giderek daha fazla kullanılmaktadır. Salesforce.com, özel iş uygulamaları oluşturmak için kapsamlı bir platform oluşturduğundan geliştiricilerin (siz de dahil) Google ve Salesforce.com'un gücünü birleştirmesi için birçok fırsat vardır.

Bu makalede, Salesforce.com platformunu veya Google Data protokolünü kullanmaya yeni başlamış olsanız bile kurumsal mashup'lar oluşturmaya başlamak için RESTful Google Data API'lerini nasıl kullanacağınız gösterilmektedir. Geliştirme ortamınızı ayarlamanıza, mevcut bir Salesforce.com ve Google mashup'ı yüklemenize ve ardından kendi mashup'ınızı yazmanıza yardımcı olacağım.

Merhaba, Salesforce.com!

Benim gibi Salesforce.com'da yeniyseniz Apex Developer Network (ADN) üzerinde geliştirici hesabına kaydolarak başlamanız gerekir. Geliştirici hesabı, tam özellikli bir Salesforce.com hesabının yanı sıra Apex wiki ve tartışma panolarına erişim imkanı sunar.

Ardından, Eclipse için Apex Toolkit'i edinmeniz gerekir. Araç seti için Java 1.5 ve Eclipse 3.2.2 veya daha yeni bir sürüm gerekir. Eclipse'i kullanmayı biliyorsanız araç kitinin yazılım güncelleme sitesi http://www.adnsandbox.com/eclipsetoolkit/10.0/'dır. Eclipse eklentileri hakkında bilginiz yoksa veya yükleme sırasında bir sorun yaşarsanız Apex wiki'sinde ayrıntılı yükleme talimatları yer alır.

Araç kiti yüklendikten sonra Eclipse'in Yardım sistemine entegre edilmiş Apex yardım içeriğine erişebilirsiniz. Bu içeriği görmek için Eclipse'te Help | Help Contents | Apex Toolkit for Eclipse (Yardım | Yardım İçeriği | Eclipse için Apex Araç Seti) bölümüne gidin. Yardım kaynaklarından biri, yeni bir proje oluşturup S-Controls, sınıflar ve tetikleyiciler eklemeyi gösteren hızlı başlangıç eğitimidir. Daha önce Apex koduyla çalışmadıysanız devam etmeden önce bu eğitimi incelemeli ve bir Apex projesi oluşturmalısınız.

Etkinlikleri Google Takvim'e aktarma

Ron Hess, Salesforce.com'daki etkinlikleri Google Takvim'e aktarmanıza olanak tanıyan bir Google Takvim Mash-up uygulaması yazdı. Ron, mashup'ının nasıl çalıştığını açıklayan bir makale de yazdı. Daha sonra nasıl oluşturacağınızı göstereceğim Google E-Tablolar uygulaması, Ron'un Google Takvim mash-up'ını temel alır. Thanks Ron!

Salesforce.com'u yoğun olarak kullanıyorsanız Ron's Google Takvim uygulamasını herhangi bir talimata gerek kalmadan entegre edip kullanabilirsiniz. Başlangıçta biraz yardıma ihtiyacım oldu. Ron'un uygulamasını çalışırken görmek için yaptığım işlemleri aşağıda bulabilirsiniz.

  1. Uygulamayı yükleyin:
    • Google Takvim Mash-up sayfasına gidip Hemen Al'ı tıklayın.
    • ADN kimlik bilgilerinizi girip Devam'ı tıklayın.
    • Hükümler ve Koşullar'ı okuyup Devam'ı tıklayın.
    • "Paket içeriğini inceleyin" sayfasında Sonraki'yi tıklayın.
    • Bir güvenlik düzeyi seçip Sonraki'yi tıklayın.
    • Yükle'yi tıklayın.
  2. Salesforce.com AJAX proxy'sini yapılandırma
    • "Yönetim Kurulumu" menüsünde Güvenlik Kontrolleri | Uzak Site Ayarları'nı tıklayın.
    • Yeni Uzak Site'yi tıklayın.
    • "Uzak Site Adı" olarak Google'ı, "Uzak Site URL'si" olarak ise https://www.google.com'u girin.
    • Kaydet'i tıklayın.
  3. Etkinlik Ayrıntıları sayfasına "Google'a ekle" düğmesini ekleyin:
    • "Uygulama Kurulumu" menüsünde Özelleştir | Etkinlikler | Etkinlik Sayfası Düzenleri'ni tıklayın.
    • "Etkinlik Düzeni" satırında Düzenle'yi tıklayın.
    • "Ayrıntılar Sayfası Düğmeleri" alanını çift tıklayın.
    • "Google'a ekle"yi vurgulayın ve düğmeyi eklemek için sağ (>) oku tıklayın.
    • Tamam'ı tıklayın.
    • "Sayfa Düzeni Özellikleri" sayfasında Kaydet'i tıklayın.
  4. Etkinlik dışa aktarma
    • Takviminizi görüntülemek için sol üstteki Ana Sayfa'yı tıklayın.
    • Etkinliğiniz yoksa etkinlik oluşturmak için Yeni Etkinlik'i tıklayın.
    • Etkinlik Ayrıntıları sayfasını görüntülemek için bir etkinliği tıklayın.
    • Google'a ekle düğmesini tıklayın.
    • JavaScript uyarısında Tamam'ı tıklayın.
    • Google kullanıcı adınız ve şifrenizle oturum açın.
    • Salesforce uygulamasına Google Takvim'inizde yazma erişimi vermek için Erişim izni ver'i tıklayın.
    • Etkinliği Google Takviminizde görüntüleme

Google E-Tablolar uygulaması oluşturma

Tamam, muhtemelen Salesforce.com sayfalarında tıklamaktan yoruldunuz ve biraz kod yazmaya hazırsınız. Eclipse'i tekrar açtığınızda, oluşturduğunuz Apex projesinin artık Ron'un Google Takvim uygulaması için S-Controls'ü içerdiğini görürsünüz. Bunun nedeni, Eclipse için Apex Toolkit'in Salesforce.com ile sürekli olarak senkronize olmasıdır.

Google Takvim Mash-up'ının kimlik doğrulama kontrolleri gibi bazı işlevlerini yeniden kullanarak kendi Google Veri uygulamanızı oluşturabilirsiniz. Bu bölümün geri kalanında, Salesforce.com kişilerinizi Google E-Tablosu'na aktaran bir uygulama oluşturmayı göstereceğim.

Basit bir S-Control yayınlama

S-Control, Salesforce.com tarafından barındırılan ve kullanıcılar uygulamanıza eriştiğinde web tarayıcılarında yürütülen bir dosyadır. S-Control, bir web tarayıcısında görüntüleyebileceğiniz veya çalıştırabileceğiniz her türlü içeriği (ör. HTML, CSS veya JavaScript) içerebilir.

Salesforce.com ve Google mashup'ında oldukça fazla hareketli bölüm var. Bu nedenle, ilk olarak JavaScript'e iyice dalmadan önce tüm tesisatın doğru olduğundan emin olmak için basit bir S-Control'u çağıran "Google'a aktar" düğmesini kişi listesi sayfasına ekledim.

Apex projenizde "S-Controls" klasörünü sağ tıklayın ve Apex | New S-Control'u (Apex | Yeni S-Control) seçin. Yeni S-Control'e export_contacts etiketini ve adını verin, türü Custom HTML (Özel HTML) olarak bırakın ve Finish'i (Bitir) tıklayın.

Yeni S-Control, temel bir HTML dosyası içerir. <head> bölümüne bir sürü JavaScript kodu ekleyeceksiniz ancak kişileri dışa aktarırken kullanıcıya gösterecek bir şey olması için önce <body> bölümünü doldurabilirsiniz. "Bekleme noktalarını" ve Google E-Tablolar logosunu göstermek için bu HTML'yi S-Control'ünüzün gövdesine kopyalayın:

<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>

Artık S-Control'ü yayınlayabilir ve bunu çağıracak bir düğme ayarlayabilirsiniz.

  1. S-Control dosyasını yayınlamak için Eclipse'i kullanın:
    • Apex projenizi sağ tıklayın ve Apex | Synchronize with Salesforce'u (Apex | Salesforce ile senkronize et) seçin.
    • Dizin ağacında yeni S-Control'ünüzü bulun, sağ tıklayın ve Override remote and publish to server'ı (Uzak sunucuyu geçersiz kıl ve sunucuda yayınla) seçin.
    • S-Control'ünüzü bulamıyorsanız Apex Toolkit bunu sizin için yüklemiş olabilir. Ancak sunucuda en son kodun çalıştığından emin olmak için perspektifi senkronize etmeniz önerilir.
  2. Bu S-Control'ü çağıracak bir düğme tanımlamak için Salesforce.com kullanıcı arayüzünü kullanın:
    • "Uygulama Kurulumu" menüsünde Özelleştir | Kişiler | Düğmeler ve Bağlantılar'ı tıklayın.
    • "Özel Düğmeler ve Bağlantılar" bölümünde Yeni'yi tıklayın.
    • Etiket için Google'a aktar'ı girin ve ad olarak Export_to_Google'ı koruyun.
    • Görüntüleme Türü olarak "Liste Düğmesi"ni seçin.
    • İçerik kaynağı olarak "Özel S-Control"u seçin.
    • Davranış olarak "Kenar çubuğu olan mevcut pencerede göster"i seçin.
    • Özel S-Denetimleri menüsünden "export_contacts"ı seçin.
  3. Düğmeyi kişi listesine ekleyin:
    • "Uygulama Kurulumu" menüsünde Özelleştir | Kişiler | Arama Düzenleri'ni tıklayın.
    • "Kişiler Listesi Görünümü" satırında Düzenle'yi tıklayın.
    • "Google'a dışa aktar"ı vurgulayın ve düğmeyi eklemek için sağ (>) oku tıklayın.
    • Kaydet'i tıklayın.
  4. Deneyin:
    • Kişiler sekmesini tıklayın.
    • Görünüm olarak "Tüm Kişiler"i seçin ve Git!'i tıklayın.
    • Yepyeni Google'a aktar düğmesini tıklayın.
    • "waiting_dots" animasyonunu izleyin ancak başka bir şey olmasını beklemeyin.

Google E-Tablolar ile etkileşimde bulunma

Google Takvim Mash-up'ının kaynağına bakarsanız gcal_snippet.scf dosyasının bir Google Takvim sunucusunun soyutlamasını içerdiğini görürsünüz. Google E-Tablolar ile etkileşimde bulunmak için Google E-Tablolar sunucusu için benzer bir dosya oluşturmanız gerekir. Ron Hess'in Salesforce.com AJAX proxy'sini kullanma ve Google AuthSub ile kimlik doğrulama kodunu yeniden kullandım ve etkinlikleri Google Takvim'e yazan işlevi, bilgileri Google E-Tablolar'a yazan bir işleve değiştirdim. Bu dosyanın tam kaynağı gspreadsheet_snippet.scf dosyasında mevcuttur.

Ardından, Salesforce.com'u sorgulamak ve iletişim bilgilerini bir Google e-tablosuna yazmak için export_contacts.scf S-Control'e JavaScript ekledim. Verileri Salesforce.com'dan çıkarmak kolaydır. Sadece bir sorgu oluşturun ve veriler döndürüldüğünde yürütülecek bir geri çağırma işlevi sağlayın. Örneğin:

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

Salesforce.com'dan iletişim bilgilerini aldıktan sonra, bu bilgileri nereye aktaracağınızı belirlemeniz gerekir. RESTful Google Veri protokolünde her e-tablo benzersiz bir URL ile tanımlanabilir. Metafeed URL'sini http://spreadsheets.google.com/feeds/spreadsheets/private/full sorgulayarak bir kullanıcının e-tablolarının (ve ilişkili URL'lerin) listesini alabilirsiniz. Aşağıdaki yöntemde, belirli bir başlığa sahip e-tabloyu bulmak için bu e-tablolar arasında yineleme yapılır. Doğru e-tabloyu bulduğunda önce çalışma sayfalarının listesini alır, ardından ilk çalışma sayfasının hücre feed'i URL'sini döndürür.

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 E-Tablolar Veri API'sinde bulunan feed'ler hakkında daha fazla bilgiyi Referans Kılavuzu'nda bulabilirsiniz.

queryCallback işlevi, hücreleri güncelleme istekleri göndermek için gereken hücre feed'i URL'sini bulmak üzere getCellFeedUrl yöntemini kullanır ve ardından iletişim bilgilerini her seferinde bir hücreye yazar.

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 yöntemi, gspreadsheet_snippet.scf S-Control'ünde bulunur. Bu yöntem, belirtilen satır ve sütundaki hücrenin düzenleme URL'sini alır, ardından güncellenen hücrenin Google Veri gösterimini içeren bir HTTP PUT mesajı gönderir:

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 E-Tablolar Veri API'si ile hücreleri güncelleme hakkında daha fazla bilgiyi Geliştirici Kılavuzu'nda bulabilirsiniz.

Google E-Tablolar Veri API'si https://spreadsheets.google.com alt alan adını kullanır. Bu nedenle, yukarıdaki kodun çalışması için Salesforce.com AJAX proxy sunucusunu yapılandırmanız ve https://spreadsheets.google.com eklemeniz gerekir.

Ayrıca Google Dokümanlar'a gidip verileri tutacak yeni bir e-tablo oluşturmanız gerekir. Dosyayı Salesforce.com Kişileri olarak kaydettiğinizden emin olun.

Bu S-Controls'leri yükledikten sonra iletişim bilgilerinizi Google E-Tablosu'na aktarabilirsiniz. Peki ya diğer yöntem? Salesforce.com ve Google Veri API'leri hakkındaki yeni bilgilerinizle, Google E-Tablolar'daki iletişim bilgilerini Salesforce.com'a aktarmak için de kod yazabilirsiniz.

Sonuç

Bu makalede konunun sadece yüzeyi çizildi. Ancak artık Salesforce.com platformu ve Google Data API'leri hakkında bilgi sahibi olduğunuza göre bu güçlü sistemlerden yararlanmak için yazabileceğiniz tüm uygulamaları düşünün. Google Data API ailesi sürekli olarak büyüyor ve uygulamalarınızda kullanabileceğiniz daha fazla bilgi sunuyor. Ayrıca Salesforce.com platformu, bu makalede ele alınmayan birçok faydalı araç sunuyor. Bir sonraki kurumsal mashup'ınızı AppExchange'te görmeyi bekliyorum.

Keyifli kodlamalar!

Kaynaklar